[英]How do I change a set range in a google sheets script so that it can be selected in the cell?
[英]How do I change the cell a user is editing? (Google Sheets)
我正在使用的工具會顯示Google雲端硬盤文件列表。 提示用戶在要包含在文檔鏈接的主庫中的每個文件旁邊放置一個“ X”。 添加文件后,我刪除具有“ X”的每一行。
在今天的測試中,我注意到,如果我在單元格中鍵入“ X”,但是在單擊“將所選文件添加到庫”按鈕之前未按Enter,則不會添加該文件。 很好,問題在於仍然存在一個選定的單元格,其中帶有“ X”,但它之間只有一個。
有沒有辦法清除正在編輯的單元格? 還是將正在編輯的單元格移至已刪除行?
如果有幫助,這是我的代碼(我顯然不是專業的編碼人員,因此感謝您的耐心配合):
function addToLibrary() {
var x = 2;
var added = 0;
var dupes = 0;
lib_last = libSheet.getLastRow();
while (sheet.getRange(x,1).getValue() != "") {
if (sheet.getRange(x,5).getValue() != "") {
id = sheet.getRange(x,1).getValue();
var checkRow = checkDupes(id);
if (checkRow >= lib_last + 1) {
var my_name = DriveApp.getFileById(id).getName();
SpreadsheetApp.getActiveSpreadsheet().toast('The design file: ' + '"' + my_name + '"' + ' has been added to the Library!', "ADDED FILE...",600);
var my_link = DriveApp.getFileById(id).getUrl();
getDeets(id, my_link);
lib_last++;
added++;
}
else {
dupes++;
}
}
x++;
}
SpreadsheetApp.getActiveSpreadsheet().toast("", "",0.1);
Browser.msgBox("Finished! Documents added: " + added + ". Duplicate documents: " + dupes);
for (var i = x - 1; i>=2; i--) { // Deletes rows with non-null
if (!sheet.getRange(i,5).isBlank()) {
sheet.deleteRow(i);
}
}
}
正在編輯的單元格正在瀏覽器中而不是服務器上進行編輯。 在用戶停止編輯之前,更新值的請求不會發送到Google。 如果用戶通過單擊按鈕“停止”編輯,則存在爭用條件,在爭用條件之間將首先得到處理-腳本執行或編輯狀態的提交。
我建議使用自定義腳本/附加菜單,這將導致在調用該功能之前提交單元格編輯,因為瀏覽器選擇從電子表格單元格更改為“表格”菜單欄。
function onOpen(e) {
// add ons need to check authMode before doing this stuff
e.source.addMenu('My Custom Menu', [
{ name: 'Add Selected Files to Library', functionName: 'addToLibrary' }
]);
}
交替:
function onOpen(e) {
// add ons need to check authMode before doing this stuff
SpreadsheetApp.getUi()
.createMenu('My Custom Menu') // .createAddonMenu()
.addItem('Add Selected Files to Library', 'addToLibrary')
.addToUi();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.