gpt4 book ai didi

javascript - 触发以获取 google-apps-script 中的 "Exceeded maximum execution time"附近

转载 作者:行者123 更新时间:2023-12-02 17:56:49 32 4
gpt4 key购买 nike

我正在尝试运行以下脚本来绕过 Google 脚本的最大执行时间。我让该函数运行 4 分钟,并设置一个触发器,使其在 5 分钟内从处理中止的位置开始再次运行。第一次运行顺利并设置了触发器。当触发器第一次运行时,它处理速度非常慢,然后不再运行。谁能告诉我我做错了什么以及是否有解决方法?

function updateAll() {

var startTime= (new Date()).getTime();
var startRow = ScriptProperties.getProperty("start_row");

//Start on row 2 if null
if (!startRow) {
startRow = "2";
}

// This code deletes all the triggers
var triggers = ScriptApp.getProjectTriggers();
for(var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

for (var i = startRow; i < 3000; i++) {
var currTime = (new Date()).getTime();

if(currTime - startTime >= 240000) {

ScriptProperties.setProperty("start_row", i)
//Set new trigger to run in 5 minutes
ScriptApp.newTrigger("updateAll")
.timeBased()
.at(new Date(currTime+300000))
.create();
break;

} else {

//Do logic and set values in spreadsheet
//Run sleep to avoid maximum script execution error
Utilities.sleep(100);

}

};
}

最佳答案

你怎么知道它运行缓慢?您使用的电子表格是新版本吗?看来there's a lot of issues with it还没有。

无论如何,我不会每次都移除触发器并重新设置它。我只是将其设置为每 5 分钟运行一次,并在检测到作业完全完成时将其删除。此外,由于“最大执行时间错误”,无需调用 Utilities.sleep 。仅当您遇到“每秒调用次数”类型的错误时,它才有用。

当我完成这个答案时,我发现您的问题可能与您的 ScriptProperties 使用有关。它只能保存字符串,如果你传递其他东西给它,它只会尝试将其解析为字符串。因此,当您从 ScriptProperties 获取 startRow 时,您应该parseInt 将其返回为数字。

var startRow = parseInt(ScriptProperties.getProperty("start_row"));

关于javascript - 触发以获取 google-apps-script 中的 "Exceeded maximum execution time"附近,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20896849/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com