google-apps-script - 使用 Apps 脚本搜索超过 10 分钟的邮件
问题描述
我正在尝试使用 Apps 脚本在收件箱中搜索超过 10 分钟的邮件。
背景:我触发每 2 小时从工作表向某个人发送一个 xlsx。他们正在更新列表并将其发回给我。现在我想获取更新的文件并将其再次上传到工作表以相应地更新原始文件。该脚本运行良好,可以获取附件并将其作为工作表上传到我的驱动器。我的问题:它似乎抓取了最初触发的文件,而不是发送回给我的新更新文件(因此新文件中的更新丢失了)。
我尝试在 GmailApp.search 中添加不同的“搜索查询”,但它似乎对我不起作用:
- 添加“-in:sent”
- “来自:@mail.com” ...
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 分钟的消息。您可以在此处找到有关搜索运算符的所有信息。虽然官方文档说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');
}
无论如何,无论相关的时间段如何,您都应该能够使用适当的搜索运算符获得所需的消息。
推荐阅读
- mysql - 如何在没有关系的情况下连接两个表,只从一个表中获取一个值并将其粘贴到另一个表中?
- arrays - 在 PowerShell 中有一种方法可以使用字符串的子字符串返回数组的索引
- java - Android Studio - GoogleAPIClient 已弃用修复
- swiftui - SwiftUI 样式更新 onEditChanged 不弹出键盘
- php - 如何在 Laravel 中动态设置 memcached 服务器?
- javascript - 如何在Javascript中的对象中提取数组中的对象?
- r-markdown - 在 R Markdown 中创建两个不同深度的目录
- json - 在 Gatling EL 之外调用 jsonStringify()
- java - 如何在 jdk15 之上运行的 felix (v603) 内的 OSGi 组件中创建 InitialDirContext
- ruby-on-rails - Ruby on Rails 中的版本控制 API 助手