【发布时间】:2020-09-03 13:57:00
【问题描述】:
我想在我的 Gmail 帐户中返回指定日期收到的所有电子邮件主题的列表。如果有多条消息具有相同的主题,我想知道有多少条。这就是我所做的:
var emailThreads = GmailApp.search("subject:<partial_subject> after:2020/8/30 before:2020/8/31");
var messages = GmailApp.getMessagesForThreads(emailThreads);
这将返回“消息数组的数组,其中外部数组中的每个项目对应于一个线程,而内部数组包含该线程中的消息”。
我尝试像这样访问我需要的数据:
for (i = 0; i < messages.length; i++) {
messages[i][0].getSubject() // a subject
messages[i].length // number of messages with the same subject
}
但是,这会返回比 Gmail 用户界面中显示的更多的邮件。
这是我注意到的:
- 它只发生在包含多条消息的线程中
- 并非所有线程都会出现多条消息
- 每次在同一天运行我的脚本,结果都是一样的
- 当我在不同天运行脚本时,即使收到相同的电子邮件,结果也会不同
考虑到这段代码非常简单,而且我只使用谷歌提供的方法,我想我一定是误解了什么,或者 Gmail 对线程中的消息做了一些奇怪的事情。
任何想法这可能是什么以及如何解决它?
编辑: 我注意到 gmail 过滤器中有一个“不包括聊天”复选框,它将“-in:chats”添加到搜索查询中,但它也没有帮助。 我还尝试在查询中添加“in:inbox”,但结果没有变化。
【问题讨论】:
-
我编辑我的答案。如果您需要进一步的帮助,我建议您添加 minimal reproducible example,其中包含足够的详细信息以重现您获得的结果以及您正在执行的操作的详细步骤,以将 Gmail UI 的结果与脚本的结果进行比较。跨度>