闪烁的单元格脚本取决于内容 - 如何无限期地进行



嗨,我有以下代码:

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秒总运行时]'。

最新更新