时间驱动触发器在 Google 电子表格中不起作用
Time-driven trigger not working in Google Spreadsheet
我有一个简单的代码,如下所示:
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 列上循环以查找第一个空行,并在其中放置一个随机值。这仅用于测试目的,如果我手动触发该功能,则可以正常工作。该函数甚至在我设置 on change 触发器时触发,因此每次我按下退格键或在 Sheet 中执行某些操作时,都会在 列中出现一个新的随机数E。但是,这不适用于时间驱动的触发器。我已经测试了一切,从每分钟设置一个触发器到:
脚本编辑器... --> 资源 --> 所有触发器 --> 时间驱动 --> 分钟计时器
甚至放置此代码:
ScriptApp.newTrigger("setValue")
.timeBased()
.after(1 * 60 * 1000)
.create();
这假设应该在 1 分钟过去后的给定时间触发该功能。 None 这些工作,我不明白为什么。还有其他方法可以每分钟触发此功能吗?由于该函数也会在 on change 上触发(但这只是一种解决方法),是否有一个脚本可以产生 on change 对 sheet哪个最终会触发这个函数?
此致问候!
将函数命名为 setValue() 以外的名称,因为这已经是 API 中的方法名称,这可能会使编译器感到困惑。
你应该可以使用触发器菜单,我刚更改函数名称后你的代码更新得很好。
顺便说一句,如果您想以编程方式执行此操作,则需要使用 everyMinutes() 方法。
ScriptApp.newTrigger("myFunction")
.timeBased()
.everyMinutes(1)
.create();
如果您希望此函数在电子表格发生变化时触发,您只需使用
function onEdit(e) {
myfunction();
}
我有一个简单的代码,如下所示:
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 列上循环以查找第一个空行,并在其中放置一个随机值。这仅用于测试目的,如果我手动触发该功能,则可以正常工作。该函数甚至在我设置 on change 触发器时触发,因此每次我按下退格键或在 Sheet 中执行某些操作时,都会在 列中出现一个新的随机数E。但是,这不适用于时间驱动的触发器。我已经测试了一切,从每分钟设置一个触发器到:
脚本编辑器... --> 资源 --> 所有触发器 --> 时间驱动 --> 分钟计时器
甚至放置此代码:
ScriptApp.newTrigger("setValue")
.timeBased()
.after(1 * 60 * 1000)
.create();
这假设应该在 1 分钟过去后的给定时间触发该功能。 None 这些工作,我不明白为什么。还有其他方法可以每分钟触发此功能吗?由于该函数也会在 on change 上触发(但这只是一种解决方法),是否有一个脚本可以产生 on change 对 sheet哪个最终会触发这个函数?
此致问候!
将函数命名为 setValue() 以外的名称,因为这已经是 API 中的方法名称,这可能会使编译器感到困惑。
你应该可以使用触发器菜单,我刚更改函数名称后你的代码更新得很好。
顺便说一句,如果您想以编程方式执行此操作,则需要使用 everyMinutes() 方法。
ScriptApp.newTrigger("myFunction")
.timeBased()
.everyMinutes(1)
.create();
如果您希望此函数在电子表格发生变化时触发,您只需使用
function onEdit(e) {
myfunction();
}