我想要一份来自gmail的昨天所有电子邮件的列表。我正在尝试使用谷歌应用程序脚本,在我的收件箱中写入查询,然后使用GmailApp.search来处理它。 after:和之前:gmail中的搜索查询返回不期望的结果,因为查询根据发送邮件的SMTP服务器时间(谷歌的服务器)进行搜索。因此,在不同的时区,搜索会给我带来不适当的结果。有没有办法使用时间标准搜索Gmail,以便我可以适应时区差异?
请注意,我的时区正确配置了本地时区,日历,gmail等,因此我在收件箱中看到的电子邮件是正确计时的。只有搜索才会产生问题。
答案 0 :(得分:8)
我实际上在经过一些试验和错误之后想出了一种方法,确实可以按时间搜索Gmail电子邮件。我注意到谷歌应用程序脚本中返回的Date()是根据我的时区。下面的代码将返回收件箱中所有前一天的电子邮件,假设新的Date()根据您的时区给出日期和时间。请注意,getTime()返回毫秒,而较新/较旧的查询需要秒。
var month = new Date().getMonth();
var date = new Date().getDate();
var year = new Date().getFullYear();
var time1 = new Date(year, month, date, 0, 0, 0).getTime();
var time2 = time1 - 86400000;
var query = "newer:" + time2/1000 + " older:" + time1/1000 + " in:inbox";
var conversations = GmailApp.search(query);
我希望它有所帮助。
答案 1 :(得分:2)
您能否提供您正在使用的确切搜索字符串以及如何构建之前和之后的日期? 您可以使用Utilities.formatDate()函数将日期字符串格式化为您所在的时区。
另一种解决方案是获取所有邮件(可能是100左右),然后丢弃所有不符合您感兴趣的时间段的邮件。