【问题标题】:Service invoked too many times for one day: gmail一天服务调用次数过多:gmail
【发布时间】:2014-02-27 23:00:12
【问题描述】:

我已尝试在此处搜索此内容,但没有找到我的解决方案。 我有以下脚本:

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

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

有人对我有什么想法吗?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    如果不需要每分钟 40 次,可以尝试让 1 个脚本每隔一小时左右遍历所有标签...

    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);           
            }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多