我目前正在运行一个基于计时器的脚本(每周一次),它将一些值从一个范围(源)复制到另一个范围(目标)。
源范围是基于导入的查询结果。因此,在显示正确的结果之前,它会经历多个计算步骤。通常,这应该是一项简单的任务-只需添加一个睡眠计时器来确保并完成它。但是,该脚本会基于未完成的计算复制数据。
下面是我处理这个问题的方法:
我设置了一个检查数据是否被正确复制的单元(触发器单元)
现在,我可以在星期天每隔一个小时左右运行一个计时器,检查触发器是真是假。但我想知道是否有一种方法可以用循环来做到这一点。
我对javascript还是个新手,所以我对从web上实现可能的解决方案不是很有信心。似乎只能根据循环中的值来中断循环。例如,一个do/while (while 'trigger‘== false)循环只会循环5分钟,直到超时。我认为函数调用与函数调用本身应该可以做到这一点,但我不知道如何正确地做到这一点。当我手动更改触发器值以强制循环时,我的版本似乎只运行一次并达到收支平衡。
function looper(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("example");
var trigger = sheet.getRange("a1").getValue();
var source = sheet.getRange("b1:j1").getValues();
var target = sheet.getRange("b2:j2");
Utilities.sleep(5000)
if (trigger == false){
target.setValues(source);
looper;
}
}发布于 2019-07-09 19:16:53
在JavaScript中,要调用函数,需要使用括号。因此,对于最后一行,尝试这样做:looper();。
https://stackoverflow.com/questions/56951284
复制相似问题