时间驱动触发器在 Google 电子表格中不起作用

Time-driven trigger not working in Google Spreadsheet

本文关键字:电子表格 不起作用 Google 触发器 时间      更新时间:2023-09-26

我有一个简单的代码,如下所示:

function setValue() {
  var col = "E";
  var sh = SpreadsheetApp.getActiveSpreadsheet();
  var values = sh.getRange("Sheet2!"+col+"1:"+col).getValues()
  var ct = 0;
  while ( values[ct][0] != "" ) {
    ct++;
  }
  ct++;
  sh.getRange(col+ct).setValue(Math.floor((Math.random() * 10) + 1));
};

这样做是在 E 列上循环以查找第一个空行,并在其中放置一个随机值。这仅用于测试目的,如果我手动触发函数,则可以正常工作。当我设置更改触发器时,该功能甚至会触发,因此每次我点击退格键或在工作表中执行某些操作时,E 列中都会出现一个新的随机数。但是,这不适用于时间驱动的触发器。我已经测试了所有内容,从每分钟设置一个触发器到:

脚本编辑器... --> 资源 --> 所有触发器 -->

时间驱动 -->分钟计时器

甚至放置此代码:

 ScriptApp.newTrigger("setValue")
   .timeBased()
   .after(1 * 60 * 1000)
   .create();

假设应该在 1 分钟后的给定时间触发函数。这些都不起作用,我也想不通为什么。有没有其他方法可以每分钟触发此函数?由于该函数也会在更改时触发(但这只是一个解决方法),是否有一个脚本可以在工作表上产生更改效果,最终会触发此函数?

此致敬意!!

将函数命名为 setValue() 以外的名称,因为这已经是 API 中的方法名称,这可能会使编译器感到困惑。

您应该能够使用触发器菜单,在我刚刚更改函数名称后,您的代码更新得很好。

顺便说一句,如果你想以编程方式做到这一点,你需要 everyMinutes() 方法。

ScriptApp.newTrigger("myFunction")
   .timeBased()
   .everyMinutes(1)
   .create();

如果您希望此函数在电子表格发生更改时触发,您只需使用

 function onEdit(e) {
     myfunction();
 }