目标是:
好像代码什么都没做。
function onEdit(event) {
var sheet = event.source.getActiveSheet(), //get edited sheet
row = event.range.getRow(), // get row needed
column = 2, // set the starting column
test,
userValues = [];
while (column<=7) {
if (sheet.getValue(row,column) == "TRUE") {
test = true
} else {
test = false;
break;
}
column++;
}
if (test) {
sheet.getRange(row,1,1,7).setBackgrounds("#b6d7a8");
}
}发布于 2022-03-24 12:06:28
我相信你的目标如下。
#b6d7a8。当我看到您的脚本时,循环中使用了getValue。在这种情况下,过程成本将很高。而且,当您使用sheet.getRange(row,1,1,7).setBackgrounds("#b6d7a8")时,您可以使用sheet.getRange(row,1,1,7).setBackground("#b6d7a8")。
在这种情况下,下面的修改如何?
修改脚本:
function onEdit(event) {
var sheetName = "Sheet1"; // Please set the sheet name.
var range = event.range;
var sheet = event.source.getActiveSheet();
if (sheet.getSheetName() != sheetName || range.columnStart < 2 || range.columnStart > 7) return;
var r = sheet.getRange(range.rowStart, 1, 1, 7)
var checks = r.offset(0, 1, 1, 6).getValues()[0].every(e => e === true);
r.setBackground(checks ? "#b6d7a8" : null);
}#b6d7a8。注意:
参考文献:
https://stackoverflow.com/questions/71600696
复制相似问题