首页 > 解决方案 > Gmail 电子邮件按脚本计数

问题描述

我正在尝试使用 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.使用https://developers.google.com/apps-script/reference/gmail/gmail-app.html#getuserlabelbynamename获取标签getUserLabelByName()

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

3.然后使用https://developers.google.com/apps-script/reference/gmail/gmail-thread.html#getmessagecount在每个线程中汇总消息计数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);

推荐阅读