0

我在这个主题上看到了很多重复,但我不知道如何真正完成需要做的事情。

我在一个工作表选项卡中有一个 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
  }
}
4

1 回答 1

0

要插入轻微的延迟,请使用Utilities.sleep(milliseconds)足够大的毫秒值以等待最慢的重新计算时间(我认为单个公式为 30000 毫秒,因为它是自定义函数的执行时间限制)。如果你想优化这个时间,也许你会想要使用指数回退之类的技术

注意: Window 对象在 Google Apps 脚本服务器端代码执行中不可用,因此setTimeout()无法使用。

于 2019-01-16T19:47:57.157 回答