【发布时间】:2018-07-13 09:50:05
【问题描述】:
我正在尝试运行一个 google 电子表格宏 (macro.gs),该宏必须下载属于某个域的大量 google 站点链接,但执行需要很长时间,因此脚本结束并且它不是尚未完成。我读到这就是设计成那样(限时执行),所以我无能为力。
function listSites() {
var domain="domain";
var PAGE_LENGTH=200;
sheet = SpreadsheetApp.getActiveSheet();
var sites = SitesApp.getAllSites(domain,0,PAGE_LENGTH);
for(var i=0; sites.length != 0; i+=PAGE_LENGTH){
for (var j=0; j<sites.length; j++) {
sheet.appendRow([sites[j].getUrl()]);
}
sites = SitesApp.getAllSites(domain, i, PAGE_LENGTH);
}
};
但是,我还读到我可以尝试使用 Google Apps 脚本运行“任务队列”以在没有时间限制的情况下运行它,但我不确定是否可以在任务中运行电子表格宏来规避那个时间限制。
到目前为止,我所阅读的所有内容都没有提供任何有关如何操作的信息。
【问题讨论】:
-
有很多宏任务应该只需要一两秒钟,但如果实施不当(阅读:按记录使用)可能需要更多更长的时间。一些示例是将值复制到不同的位置并更改格式。我建议您分享一个代码示例或描述一下您的宏在做什么。另外:您应该提供对您进行的研究的参考。 Apps Script 代码总是有时间限制的,但持续时间因使用环境而异(从 30s 到 30m,通常为 6m)。
-
我已经添加了被执行的脚本。我认为问题不在于实施,而在于有很多站点。
-
创建一个输出数组并使用
setValues()而不是appendRow。也分享您的执行记录以进一步优化。
标签: google-apps-script google-sheets google-sheets-macros