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