使用 Apps 脚本搜索超过 10 分钟的邮件

Search mails newer than 10 minutes with Apps Script

我正在尝试使用 Apps 脚本在我的收件箱中搜索超过 10 分钟的邮件。

背景:我正在触发每 2 小时将工作表中的 xlsx 发送给某个人。他们正在更新列表并将其发回给我。现在我想获取更新后的文件并将其再次上传到工作表以更新原始文件 accordingly.The 脚本运行良好,可以获取附件并将​​其作为工作表上传到我的驱动器。 我的问题:它似乎抓取了最初触发的文件,而不是发送回给我的新更新文件(因此缺少新文件的更新)。

我尝试在 GmailApp.search 中添加不同的“搜索查询”,但它似乎对我不起作用:

var threads = GmailApp.search("newer_than:0.1h AND from:mail.com AND subject:Issue Log AND -label:processed AND -in:sent",0,10);

我试过“newer_than:0.1h”,但这似乎不正确。 知道搜索最长 10 分钟的邮件是否有帮助吗?还有其他我可能在这里做错的建议吗?我真的 运行 没主意了...

提前致谢!

我认为您的问题需要一种不同的方法来获取您想要的电子邮件。但是,关于您提出的主要问题,目前无法获取超过 10 分钟的消息。您可以找到有关搜索运算符的所有信息 here。 虽然官方文档说 Search for messages older or newer than a time period using d (day), m (month), and y (year) 您也可以在搜索中使用 h(hour),但请记住这些值必须是整数。

但是,如果您确实需要处理较小的时差,则有一种解决方法。您可以将当前时间与每条消息的时间进行比较。我给你一小段代码让你看得更清楚。

var threads = GmailApp.search("newer_than:1d") // change that query for the one that works for you
var now = new Date() // current time
  for (var i = 0; i < threads.length; i++) {
    message = threads[i].getMessages()[0]
    time = message.getDate()
    subject = message.getSubject()
    diff = (now-time)/60000 // milliseconds to minutes 
    Logger.log('Message with subject ' + subject + ' has been received ' + diff + ' minutes ago');
  }

无论如何,无论相关时间段如何,只要使用适当的搜索运算符,您都应该能够获得所需的消息。

我认为你的问题是你没有正确处理线程内的消息。我附上了另一段代码,这样您就可以获取线程中的每条消息及其信息,例如主题、正文和附件。这样你就可以找到你需要的文件了。

  for (var i = 0; i < threads.length; i++) {
    messages = threads[i].getMessages()
    for (var j = 0; j < messages.length; j++) {
      subject = messages[j].getSubject()
      body = messages[j].getPlainBody()
      attachment = messages[j].getAttachments()
    }
  }