首页 > 解决方案 > 使用 Google Apps 脚本过滤不是来自给定域的电子邮件

问题描述

在 Google Apps 脚本中,我正在执行以下脚本:

var  filter = "in:inbox from:-domain.com",
    threads = GmailApp.search(filter);

Logger.log(threads.length);
for (var i = 0; i < threads.length; i++) {
  var msgs = threads[i].getMessages();
  for (var j = 0; j < msgs.length; j++) {
    Logger.log('Thread ' + i + ', Mess. ' + j + ' ' + msgs[j].getFrom() + ' ' + msgs[j].getSubject());
  } 
}

目的是列出收件箱中所有不是从某个地址发送的邮件domain.com。文档中说GmailApp.search(query)query“是搜索查询,就像您将其输入到 Gmail 中一样”。但是,我从代码中获得的结果与我in:inbox from:-domain.com在 Gmail 搜索框中复制和粘贴的对话不同。

具体来说,通过 API,我得到了一个额外的线程。该线程由两条消息组成,其中初始消息来自“foo@department.domain.com”和答案“bar@domain.com”。鉴于filterGmail 应用程序结果,它们都不应该存在。为什么不是这样?

编辑

经过几天的测试,我看到了这里提到的问题和被延后的消息之间的相关性。此提示应有助于重现该问题。为了更好地理解和分析,我将发布一个专门针对此的问题。

标签: google-apps-scriptgmailgmail-api

解决方案


可以使用 Gmail API 检索邮件标头(发件人、主题等),(在 Apps 脚本中,它是 Gmail 高级服务)您可以发出请求,指定要检索的 metadataHeaders 参数。像下面的示例请求


推荐阅读