2014-02-27 58 views
1

我試過在這裏搜索,但是找不到我的解決方案。 我有以下腳本:一天的服務調用次數太多:gmail

function getMessagesWithLabel() { 
var destArray = new Array(); 
    var threads = GmailApp.getUserLabelByName('1001').getThreads(0,1); 

    for(var n in threads){ 
     var msg = threads[n].getMessages(); 
     var destArrayRow = new Array(); 
     destArrayRow.push('Record'); 
      for(var m in msg){ 
        destArrayRow.push(msg[m].getPlainBody()); 
      } 
    destArray.push(destArrayRow);   
     } 
Logger.log(destArray); 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sh = ss.getActiveSheet(); 
if(ss.getLastRow()==0){sh.getRange(1,1).setValue('getMessagesWithLabel() RESULTS')}; 
sh.getRange(ss.getLastRow()+1,1,destArray.length,destArray[0].length).setValues(destArray) 

var sheet = ss.getSheets()[0]; 
// Rows start at "1" - this will delete the first row 
sheet.deleteRow(1); 
} 

這樣做是這種進口的最後一封電子郵件與標籤「1001」 我有同樣的劇本約40個標籤。 我試圖每分鐘觸發每一個,但我得到這個錯誤。 我想知道的是,是否有一種方法可以在一個請求中合併所有「GmailApp.getUserLabelByName」請求?並且每個結果應該在不同的行中? 現在發生的是,它取得結果,放在第2行,並刪除第1行,依此類推。

我不介意在一張紙上有所有結果。

任何人有任何想法對我?

回答

0

可以嘗試只具有貫穿所有每隔一小時或標籤1個腳本循環,所以如果40每分鐘是沒有必要的......

var labels = ['1001', '1002', '1003']; 
for (var i in labels) { 
var threads = GmailApp.getUserLabelByName(labels[i]).getThreads(0,1); 

    for(var n in threads){ 
     var msg = threads[n].getMessages(); 
     var destArrayRow = new Array(); 
     destArrayRow.push('Record'); 
      for(var m in msg){ 
        destArrayRow.push(msg[m].getPlainBody()); 
      } 
    destArray.push(destArrayRow);   
     } 
} 
相關問題