如何在Google表格中创建函数sleep(毫秒)以延迟或暂停范围内的公式

问题描述 投票:1回答:1

在Google工作表中,我有:

Range B1:B260

我有功能:

(ImportXML(A1;"//a/@href")
(ImportXML(A2;"//a/@href")
(ImportXML(A3;"//a/@href")
.
.
.
(ImportXML(A260;"//a/@href")

我需要延迟两次计算之间的时间,因为如果同时执行此操作,由于API和#REF!中的限制,我将获得[C0

如果每个单元格计算延迟10秒就可以了

[我试图创建一个=ImportXML()函数,以仅在字符数大于X的情况下才在单元格中执行计算...但是它仅延迟了一小部分时间。

在Google脚本中使用=LEN()可以得到公式sleep(milliseconds)吗?延迟ImportXML,Importdata,Import ....处理?

google-apps-script google-sheets sleep onpause google-sheets-importxml
1个回答
1
投票

您可以使用sleep(B1:B260,5000)函数在两个单独的远程API调用之间休眠。请参见下面的示例:

Utilities.sleep(milliseconds)

关于实现function runScraper() { var resultRange = SpreadsheetApp.getActive().getRange("B1:B260"); var urlRange = SpreadsheetApp.getActive().getRange("A1:A260"); for (var i=1; i<=urlRange.getHeight(); i++) { var currentValue = resultRange.getCell(i, 1).getValue(); if (currentValue !== "") continue; var url = urlRange.getCell(i, 1).getValue(); var result = scrape(url); resultRange.getCell(i, 1).setValue(result); Utilities.sleep(10000); } } 函数,实现取决于您使用的是哪个API,以及所使用的数据传输格式是什么(JSON,XML ...)。为此,我建议您检查以下链接:

免责声明

Google Apps脚本的最大运行时间为https://developers.google.com/apps-script/guides/services/external。如果您为每个呼叫等待10秒,并且总共发出260个呼叫,则将超过最大运行时间。为此,在上面的代码中,我实现了一个检查,该检查将验证正在处理的行尚未被擦除。如果已经被刮掉,它将直接进入下一个。这将使您可以轻松地重新运行脚本,并从上一次停止的位置继续(由于超时)。

© www.soinside.com 2019 - 2024. All rights reserved.