【问题标题】:Gmail Emails Counts by ScriptGmail 电子邮件按脚本计数
【发布时间】:2020-02-04 17:19:33
【问题描述】:

我正在尝试使用 Google Scripts 统计我所有带有“完整 - 其他”标签的电子邮件。问题是,查询并未计算所有电子邮件。如果我查看标签,我至少有 21k 个线程,而脚本只计算了 591 封电子邮件。

你知道我该怎么做才能纠正这个问题吗?

谢谢!

代码示例:

`function countMessages3() {

  var spreadsheet = SpreadsheetApp.getActive()
  SpreadsheetApp.setActiveSheet(spreadsheet.getSheetByName('Mails'))

  var threads = GmailApp.search('in:sent');

  var receivedCount = 0;


  for(var i=0; i<threads.length; i++)
  {
    receivedCount = receivedCount + threads[i].getMessageCount();

  }

  spreadsheet.getRange('\'Mails\'!B4').setValue(receivedCount);`

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    我猜,您提供的代码是在已发送文件夹中搜索邮件。要在标签中搜索消息,我认为您可以执行以下操作:

    1.使用getUserLabelByName()https://developers.google.com/apps-script/reference/gmail/gmail-app.html#getuserlabelbynamename获取标签

    2.使用getThreads()https://developers.google.com/apps-script/reference/gmail/gmail-label.html#getthreads获取该标签的所有线程

    3.然后使用getMessageCount()聚合每个线程中的消息计数 https://developers.google.com/apps-script/reference/gmail/gmail-thread.html#getmessagecount

    类似这样的:

    var labelName = "complete-others";
    var messageCount = 0;
    
    var label = GmailApp.getUserLabelByName(labelName);
    var threads = label.getThreads();
    threads.forEach(function(thread) {
        messageCount += thread.getMessageCount();
    });
    
    spreadsheet.getRange('\'Mails\'!B4').setValue(messageCount);
    

    【讨论】:

    • 谢谢。我收到此错误:TypeError:无法调用 null 的方法“getThreads”。 (第 52 行,文件“代码”)
    • 这意味着 gmail 无法找到任何具有该名称的标签。你能验证你的名字是否正确,大小写正确吗?
    • @OctavioSchiff,从随附的屏幕截图来看,labelName 似乎是 complete-others 而不是 complete - others,这是您的原因获取TypeError。因此,您应该只进行以下更新:var labelName = "complete-others"。干杯!
    【解决方案2】:

    这是一个计算您的电子邮件的功能。

    function countEmailsWithLabel(query) {
      var n=0;
      var ts=GmailApp.search(query);
      ts.forEach(function(t,i){
        var ms=t.getMessages();
        n+=ms.length;
      });
      Logger.log(n);
      return n;
    }
    

    问题当然是弄清楚搜索查询应该是什么。我在创建为“Q0/TEST”的标签中有几封测试电子邮件,但我在 Gmail 中搜索时发现搜索为“label:q0-test”,这与我的标签不符。所以我尝试使用“label:q0-test”的搜索查询进行搜索,但没有成功。所以现在我在创建时使用带有标签的查询,这样搜索查询现在是“标签:Q0/TEST”,我得到正确的结果 3。所以我建议您在创建标签时使用标签,而不是比您在 Gmail 搜索的搜索框中看到的要多。

    实际上我几周前遇到了这种不一致,我怀疑它可能给新程序员带来了一些困难。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 2012-07-30
      • 2011-10-11
      • 2018-03-08
      相关资源
      最近更新 更多