如何使用Google Apps脚本在特定日期之后收到Gmail邮件?

时间:2016-10-04 13:14:12

标签: google-apps-script gmail

是否可以直接检索特定日期之后收到的所有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    
  }
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:3)

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

您没有记录,您也可以按日期+时间搜索,分辨率为1秒,因为日期操作员喜欢“之前”和“之后”accept unix timestamps

应用程序脚本api的一个蹩脚问题是它返回线程而不是消息,并且需要循环由新消息唤醒的潜在长线程,使其不那么健壮,因为处理这些旧消息可能非常耗时。来自应用程序脚本高级服务的Gmail高级API确实有另一个消息级搜索API,不会出现这个问题。