【发布时间】:2018-07-24 03:40:36
【问题描述】:
我为我的 GMail 帐户创建了一个 Google Apps 脚本。它会检查我的@ACTIONS 文件夹中的电子邮件,并根据它的年龄添加标签。
例如,这部分脚本在电子邮件超过一周时添加标签1 WEEK OLD:
var threads = GmailApp.search('label:@actions older_than:7d newer_than:14d -(label:1 WEEK OLD) ');
var label = GmailApp.getUserLabelByName("1 WEEK OLD");
for (var t in threads) {
threads[t].addLabel(label);
};
我还有其他的为 3 DAYS、2 WEEKS OLD 和 30 DAYS OLD 添加标签。 当电子邮件被移出@ACTIONS 文件夹时,标签将被删除:
var threads = GmailApp.search('-(label:@actions) (label:1 WEEK OLD)');
var label = GmailApp.getUserLabelByName("1 WEEK OLD");
for (var t in threads) {
threads[t].removeLabel(label);
};
问题在于 Gmail 搜索功能:older_than 适用于线程中的初始电子邮件 - 而不是最终电子邮件。因此,即使稍后有回复,也会显示标签。例如,几个月前收到的一封电子邮件添加了 30 DAYS 标签,尽管它在上周得到回复。
有没有办法根据上次回复的日期添加这些标签 - 而不是原始电子邮件的日期。
完整的脚本在这里:https://pastebin.com/Xdv8U5eV
谢谢!
【问题讨论】:
-
使用 Gmail 高级服务,您可以使用
Gmail.Messages.modify和.batchModify执行每封邮件的标签分配 Gmail 的行为,其中查看对话线程显示所有邮件的所有标签,不能使用 Apps 脚本更改。 -
谢谢。我不确定我将如何使用
Gmail.Messages.modify。我对显示所有消息中的所有标签的默认视图很好,但我希望线程的标签根据线程中最新电子邮件的日期显示标签。如果有办法根据线程的最新电子邮件进行标记,那将是我的解决方案。 -
在我的代码中,
t是线程,有没有办法找出最新电子邮件的日期。然后算出几天前?然后我可以添加标签。 -
啊,好吧,我找到了
getLastMessageDate(),所以这应该会有所帮助。 -
啊,明白了!让我做一些测试,但 getLastMessageDate() 看起来像答案!