您好我有以下代码:
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次左右。谷歌运行for循环时是否有时间限制?在我将单元格值更改为其他值之前,有没有办法让它无限期?
答案 0 :(得分:0)
对Google服务进行如此多的调用将会计入您的每日配额。有关配额的更多信息,请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限制了总执行时间,并且不允许您的脚本连续运行。如果你去查看 - &gt;在脚本编辑器中执行脚本,你会看到类似这样的'执行失败:超过最长执行时间[总运行时间为32.548秒]。