如何使用 Google Apps 脚本获取在特定日期后收到的 gmail 邮件?

How to get gmail messages received after a particular date using Google Apps Script?

是否可以直接检索在特定日期之后收到的所有 Gmail 邮件,而无需查看所有邮件?

目前,我正在使用GmailApp.getInboxThreads(0, 50)函数检索前50个线程,然后遍历所有线程以找到满足条件的消息。但是如果满足条件的线程超过50个呢?因此,使用 GmailApp.getInboxThreads(start, max) 功能获取电子邮件并不是一个完美的解决方案。

getInboxThreads() 函数看起来不错,但当所有线程的大小太大系统无法处理时它可能会失败。

此外,它应该提取除垃圾邮件文件夹中的所有电子邮件之外的所有电子邮件。

这是我使用的代码。

var gmailThreads = GmailApp.getInboxThreads(0, 50);

for (var i = 0; i < 50; i++) {
  var messages = gmailThreads[i].getMessages();
  for (var j = 0; j < messages.length && (messages[j].getDate().valueOf() > requiredDate.valueOf()); j++) {    
    //Loop Content    
  }
}

使用搜索,指定开始日期。 https://developers.google.com/apps-script/reference/gmail/gmail-app#search(String)

你没有记录,你也可以按日期+时间搜索,分辨率为 1 秒,因为像 "before" 和 "after" accept unix timestamps.

这样的日期运算符

该应用程序脚本的一个蹩脚问题 api 是它 returns 线程,而不是消息,并且需要循环可能被新消息唤醒的长线程,从而使其不太健壮处理那些旧消息非常耗时。来自应用程序脚本高级服务的 Gmail 高级 api 确实有另一个邮件级搜索 api,不会有那个问题。