2014-10-09 58 views
0

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

回答

3

我不跟你自己的答案,该问题上达成一致 - 我认为 - 是不同的。

你的脚本创建15秒后运行的功能,这意味着经过短暂的,而你有一个同时运行相同功能的多个实例......这不是一个好主意,基于时间的触发器。

,你将面临与特性和计算在同一记账请求一些其他的限制问题。

通常的(和工作)的方式使用定时器触发时,能够防止最大执行时间误差进行是简单地允许执行每5分钟时的平均执行时间是短超过5分钟。

我个人建立触发以每10分钟一次,并使用tmie措施例行检查我从来没有超过5分钟,所以我敢肯定,我才开始下一个第一轮已经结束。

一个例子是this post for example查看,但我发表了很多其他的工作示例...

0

答案,任何人谁是好奇,似乎是肯定的。加入这个我函数的顶部后,脚本工作

triggers = ScriptApp.getProjectTriggers(); 
if(triggers.length) { 
    ScriptApp.deleteTrigger(triggers[0]) 
} 

它应该不用说,当然,这对于创建一个无限循环的可能性,所以要小心。

+2

它的工作,因为你停止以前的“线” ......但它没有得到工作完成得更快。也没有无限循环......也没有足够的空间来解释这个评论。 – Mogsdad 2014-10-09 22:37:18

相关问题