做谷歌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