是否可以直接检索特定日期之后收到的所有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;
答案 0 :(得分:3)
使用搜索,指定开始日期。 https://developers.google.com/apps-script/reference/gmail/gmail-app#search(String)
您没有记录,您也可以按日期+时间搜索,分辨率为1秒,因为日期操作员喜欢“之前”和“之后”accept unix timestamps。
应用程序脚本api的一个蹩脚问题是它返回线程而不是消息,并且需要循环由新消息唤醒的潜在长线程,使其不那么健壮,因为处理这些旧消息可能非常耗时。来自应用程序脚本高级服务的Gmail高级API确实有另一个消息级搜索API,不会出现这个问题。