我正在使用的工具会显示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);
}
}
}
答案 0 :(得分:3)
正在编辑的单元格正在浏览器中而不是服务器上进行编辑。在用户停止编辑之前,更新值的请求不会发送到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();
}