【发布时间】:2021-07-20 10:36:01
【问题描述】:
所以我试图为几个不同的事情运行一个 onEdit 命令,因为不可能同时运行 2 个,所以我将它们组合成一个 if 语句。这是通过我正在编码的谷歌表格。
复选框在“Waitlist”中,发送的数据是“归档”。
复选框被选中 存在多条路径;
[1] 如果框在第 3 行到 ~17 中被选中(它只需要 10atm) 将行复制到另一个名为存档的工作表,删除该行然后创建一个新的空白行。
[2] 如果从第 31 行开始选中该框,则复制然后将数据移动到同一存档,然后删除行。
我的代码:
function onEdit(e) {
const src = e.source.getActiveSheet();
const r = e.range;
if (src.getName() != "Waitlist" || r.columnStart != 11 || r.rowStart !==4 && r.rowStart !==5 && r.rowStart !==6 && r.rowStart !==7 && r.rowStart !==8 && r.rowStart !==9 && r.rowStart !==10 )
return;
// does it meet criteria [1]?
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = ss.getRange("Waitlist!B18:L18");
var row = range.getRowIndex();
sheet.insertRowsAfter(17, 1);
range.copyTo(sheet.getRange(row + 1, 1, 1, column), {contentsOnly:false});
// create copy of row with drop downs.
const dest2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archives");
src.getRange(r.rowStart,3,1,10).moveTo(dest2.getRange(dest2.getLastRow()+1,1,1,10));
src.deleteRow(r.rowStart)
// move then delete row.
if (src.getName() != "Waitlist" || r.columnStart != 11 || r.rowStart != 31 && r.rowStart !=32 && r.rowStart !=33 && r.rowStart !=34)
return;
// does it meet criteria [2]?
const dest1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Archives");
src.getRange(r.rowStart,3,1,10).moveTo(dest1.getRange(dest1.getLastRow()+1,1,1,10));
src.deleteRow(r.rowStart)
//move then delete row.
}
问题是,当我执行它时,它只会执行两条路径之一。 我不确定我在这里缺少什么......
【问题讨论】:
-
这很多||和 && - 你确定那些 OR 和 AND 的布尔逻辑是正确的 - 布尔逻辑可能很棘手
-
it will only do one of the two paths.走哪条路径,相关值是什么? -
你可以在同一个onEdit函数中进行多种不同的操作。
标签: javascript google-apps-script google-sheets