做谷歌Apps腳本有內建的機制,以防止長期循環,它懷疑可能的編程錯誤?我問的原因是我有一個谷歌應用程序腳本,我爲我的Gmail創建,以控制它。爲了最大限度的避免執行時間錯誤,我只是在一個時間清理100封郵件,然後啓動功能在使用基於時間觸發,這將繼續下去,直到有沒有更多的電子郵件進行清理。我有很多郵件要清理,腳本運行了大約7次左右,然後就停止了。我的代碼設置爲在每個可能的失敗或終點時給我發電子郵件,但我沒有收到電子郵件,它只是停止。當我看劇本的觸發器時,他們會按預期每分鐘左右前進,直到第七到第九次,然後他們停止。這是我的代碼,但我不認爲這是代碼問題。谷歌應用程序的腳本時基觸發迴路超時
function runcleanup() {
var unreadthreads = 'label:all label:unread -has:red-star older_than:7d',
archivethreads = 'label:inbox -has:red-star older_than:14d',
threads,
execute;
try {
threads = GmailApp.search(unreadthreads, 0, 100);
Logger.log(threads.length);
if (threads.length) {
execute = markasread(threads);
ScriptApp.newTrigger("runcleanup")
.timeBased()
.at(new Date((new Date()).getTime() + 1000 * 15))
.create();
} else {
GmailApp.sendEmail(Session.getActiveUser().getEmail(),
"troubleshooting script",
"threads = " + threads.length);
}
} catch (e) {
GmailApp.sendEmail(Session.getActiveUser().getEmail(),
"troubleshooting script ERROR",
"error = " + e);
}
}
function markasread(threads) {
if (!threads) {
return false;
}
for (var i = 0; i < threads.length; i++) {
threads[i].markRead();
}
return true;
}
function archive(threads, maxDate, delayread) {
if (!threads) {
return false;
}
for (var i = 0; i < threads.length; i++) {
threads[i].moveToArchive();
}
return true;
}
它的工作,因爲你停止以前的「線」 ......但它沒有得到工作完成得更快。也沒有無限循環......也沒有足夠的空間來解釋這個評論。 – Mogsdad 2014-10-09 22:37:18