服务调用太多次一天:gmail

时间:2014-02-27 23:00:12

标签: google-apps-script

我试过在这里搜索这个但是找不到我的解决方案。 我有以下脚本:

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行,依此类推。

我不介意在一张纸上有所有结果。

任何对我有任何想法的人?

1 个答案:

答案 0 :(得分:0)

如果没有必要每分钟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);           
        }
}