2014-10-09 40 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

相關問題