嗨,我有以下代码:
function onEdit(e) {
if (e.value == "Requested") {
var number = 50; // Number of blink
for (var i = 0; i <= number * 2; i++) {
if (i % 2 == 0) {
var color = "white";
} else {
var color = "red";
}
e.range.setBackground(color);
SpreadsheetApp.flush();
Utilities.sleep(1500); // Blink speed (ms)
}
e.range.setBackground("white") // Cell color is white after blinks were completed.
}
}
由于某种原因,即使我将其设置为50,小区也会闪烁少于10倍。有没有办法使其无限期直到我将单元格值更改为其他东西?
对Google Services进行如此多的电话会违反您的日常配额。有关配额的更多信息,这里https://developers.google.com/apps-script/guides/services/quotas
仅将服务调用用于真正重要的事情,例如获取和处理数据。找到另一种突出显示编辑单元格的解决方案。
由于延迟,您永远不会闪烁以完美地渲染,但是您可以将等待时间降低到50毫秒。查看下面的脚本。请注意,这是非常糟糕的做法,应该不惜一切代价避免。
//junk code: not for use
var i = 0;
var isRunning = true;
while(isRunning) {
if (i % 2 == 0) {
var color = "white";
} else {
var color = "red";
}
i++;
e.range.setBackground(color);
SpreadsheetApp.flush();
Utilities.sleep(30); // Blink speed (ms)
}
尝试为多个单元格执行它。您会注意到脚本将在一段时间后停止执行。这是因为Google限制了总执行时间,并且不允许您的脚本连续运行。如果您转到脚本编辑器中的视图 ->执行笔录,您会看到类似"执行失败的事情:超过最大执行时间[32.548秒总运行时]'。