【问题标题】:Count Number of Emails in Inbox by Sender [duplicate]按发件人计算收件箱中的电子邮件数量[重复]
【发布时间】:2020-08-12 21:52:03
【问题描述】:

参考another user's question,我一直在尝试从我的 Gmail 收件箱中获取每个电子邮件地址的电子邮件数量。我确定在 Google Developer Console 以及 Google Apps 脚本中启用了 Gmail API。但是,在运行脚本时,我收到一条错误消息

“异常:无效参数:值(第 22 行,文件“代码”)”.

我一直在谷歌上搜索一些答案,但我缺乏理解阻碍了我的进步。

以下是完整的代码,不包括我的电子邮件地址。非常感谢任何建议。

function sender_list_paged(token) {
  var token=token||null;
  var query="in:inbox"; 
  var sender_array=[];
  var uA=[]
  var cObj={};
  do{
    var result=Gmail.Users.Messages.list("MY-EMAIL@gmail.com", {maxResults:10,pageToken:token,q:query});
    var list=result;
    Logger.log(list);
    for(var i=0;i<list.messages.length;i++) {
      var sender=GmailApp.getMessageById(list.messages[i].id).getFrom();
      if(uA.indexOf(sender)==-1) {
        uA.push(sender);
        sender_array.push([sender]);
        cObj[sender]=1;
      }else{
        cObj[sender]+=1;
      }
    }
    token=list.nextPageToken;
    PropertiesService.getUserProperties().setProperty("lastpagetoken", token);
  }
  while(token);
  sender_array.forEach(function(r){
    r.splice(1,0,cObj[r[0]]);
  });
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet()
  sh.clear();
  sh.appendRow(['Email Address','Count']);
  sh.getRange(2, 1,sender_array.length,2).setValues(sender_array).sort({column:1,ascending:true});
}

【问题讨论】:

    标签: google-apps-script gmail


    【解决方案1】:

    我看到您所指的post 有一个可行的解决方案:

    function sender_list() {
      var inbox_threads=GmailApp.search('in:anywhere');
      var sender_array=[];
      var uA=[];
      var cObj={};
      for(var i=0;i<inbox_threads.length;i++) {
        var message=inbox_threads[i].getMessages();
        for(var x=0;x<message.length; x++) {
          var sender=message[x].getFrom();  
          if(uA.indexOf(sender)==-1) {
            uA.push(sender);
            sender_array.push([sender]);
            cObj[sender]=1;
          }else{
            cObj[sender]+=1;
          }
        }
      }
      sender_array.forEach(function(r){
        r.splice(1,0,cObj[r[0]]);
      });
      var ss=SpreadsheetApp.getActive();
      var sh=ss.getActiveSheet()
      sh.clear();
      sh.appendRow(['Email Address','Count']);
      sh.getRange(2, 1,sender_array.length,2).setValues(sender_array).sort({column:1,ascending:true});
    
    }
    

    免责声明:

    本文使用的代码来自这里:

    Count number of Gmail emails per sender

    【讨论】:

    • 你说得对,我的错。脚本运行完美,我能够在 Google 表格中从最多到最少的电子邮件对其进行排序。清理收件箱的巨大帮助。
    猜你喜欢
    • 2011-10-11
    • 2019-06-22
    • 2020-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 2015-10-09
    • 1970-01-01
    相关资源
    最近更新 更多