2017-02-10 85 views
0

我正在運行GmailApp.search以查找未標記的電子郵件,對其進行分類,然後將其標記爲符合各種規則。該腳本每10分鐘觸發一次,但會得到'超出用戶速率限制'的警告。以下是我正在運行的GmailApp搜索。通常,我的收件箱中只有不到100個無標籤的電子郵件,因此如果搜索以任何方式有效,我都不會期望這會花費大量資源。GMailApp.search超出用戶數限制

function RunRules() 
{ 
    var threads = GmailApp.search("label:inbox has:nouserlabels"); 
    if (threads.length > 0) 
    { 
     for (var idxThread=threads.length-1; idxThread>=0; idxThread--) 
     { 
     var messages = threads[idxThread].getMessages(); 
     if (messages) 
     { 
      for (var idxMsg=messages.length-1; idxMsg>=0; idxMsg--) 
      { 

      if (messages[idxMsg].isInInbox()) 
      { 
       RunRulesOnMessage(messages[idxMsg]); 
      } 
      } 
     } 
     } 
    } 
} 

任何建議如何避免用戶的速率限制?

謝謝, 戴夫

回答

0

Usage Limits基礎,Gmail的API有250 quota per second每用戶速率限制。

進一步閱讀,請注意,對於您可以使用的每種方法,還有一個相應的配額單位,如前所述,請求消耗的配額單位數取決於所調用的方法。

所以,很可能你會超越您的每用戶速率限制,如果,例如,一個客戶端請求獲得使用messages.get這相當於每個請求5配額單位75個無標籤的郵件。

對於這一點,我建議你,請嘗試以下方法:

  • 臨時錯誤的情況下實現與exponential backoff重如HTTP 429個錯誤,HTTP 403錯誤配額,或HTTP 5XX錯誤。
  • batching requests鼓勵您的客戶端將多個API調用放入單個HTTP請求。但是,較大的批量大小可能會觸發速率限制,並且不推薦發送大於50個請求的批次。

最後,您可能還想檢查Gmail Per-User Limits哪些因爲任何原因無法增加。

希望以上信息有幫助!