关于这个主题,我已经看到很多重复的内容,但是我看不到如何实际完成需要做的事情。
我在一个工作表标签中有一个URL列表,在另一个工作表标签中有一个IMPORTXML()函数。我正在编写一个脚本,将每个URL复制到第二个选项卡,然后根据IMPORTXML()的输出执行操作。为此,我需要在脚本中稍加延迟以确保IMPORTXML()在继续之前已计算出。 setTimeout()在这里似乎不合适,因为我需要基于输出来计算脚本的其他参数(正在检查的行等)。救命!
function test(){
var sh = SpreadsheetApp.getActiveSpreadsheet();
var list = sh.getSheetByName("Dec 2018").getRange(row,3,sh.getSheetByName("Dec 2018").getLastRow()-row).getValues();
var check = sh.getSheetByName("Check");
for(var row = 2;row<500;row++){
check.getRange(1,1).setValue(list[row-2][0]);
//wait right here
//other code to run based on the output of the =IMPORTXML() formula on the Check sheet
}
}
答案 0 :(得分:0)
要插入稍有延迟,请使用Utilities.sleep(milliseconds)
,其毫秒值足够等待最慢的重新计算时间(我认为单个公式的计算时间为30000 ms,因为这是自定义函数的执行时间限制)。如果您想优化这次,也许您会想要使用类似exponential back-off
注意:Window对象在Google Apps脚本服务器端代码执行中不可用,因此不能使用setTimeout()
。