【发布时间】:2014-01-03 04:58:40
【问题描述】:
我正在尝试运行以下脚本来绕过 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);
}
};
}
【问题讨论】:
-
顺便说一句,
Date.now()是你的(new Date()).getTime()。
标签: javascript google-apps-script google-sheets