Я пытаюсь запустить следующий скрипт, чтобы обойти максимальное время выполнения скрипта Google. Я выполняю функцию в течение 4 минут и устанавливаю триггер, чтобы он запускался снова через 5 минут, начиная с того места, где он был остановлен при обработке. Первый раз через него выполняется плавно и задает триггер. Когда триггер запускается в первый раз, он обрабатывается очень медленно, а затем не запускается снова. Может ли кто-нибудь сказать мне, что я делаю неправильно, и если есть способ обойти это?Триггер, чтобы обойти «Превышено максимальное время выполнения» в google-apps-script
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);
}
};
}
Btw, 'Date.now()' 'делает ваш (новый Date()). GetTime()'. –