如何解决如何处理和处理与旧邮件主题行和发件人相同的新Gmail邮件?
在Gmail中,我有两个用于接收电子邮件的过滤器:
- 过滤器1-当一封带有特定主题行的电子邮件(我们将其称为“主题1”)到达时,它会将标签应用于该电子邮件。
- 过滤器2-当一封电子邮件带有不同的特定主题(“主题2”)时,它将对电子邮件应用相同的标签(与“主题1”的标签一样)。
所有这些电子邮件的发送者是同一发送者。电子邮件是订单确认。因此,在“主题1”电子邮件(与“主题2”相同)中,电子邮件格式相同,只是客户名称不同,依此类推。唯一的标识符是所有电子邮件中的订单号。
然后,我有一个Google Apps脚本脚本,每隔x分钟运行一次,以查看是否有带有该标签的电子邮件。这是脚本的一部分:
var gmailLabelName = "GmailLabelIGaveTheEmails"
var gmailLabelObject = GmailApp.getUserLabelByName(gmailLabelName);
var threads = gmailLabelObject.getThreads();
for (var i = 0; i < threads.length; i++) {
messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
message = messages[j];
emailText = message.getPlainBody();
--- Process the order ---
问题在于,当您标记收到的电子邮件时,Gmail还会有效地标记过去(1天?)所有具有相同主题的电子邮件。
因此,当您遍历消息时(上面的j
遍历,您不仅可以获得刚刚下的新订单/刚刚收到的新电子邮件,还可以获得所有最近已处理的信息订单/电子邮件。
我一直在做的事情是跟踪已经处理了哪些订单号。如果message
(变量如上所示)的订单号已经处理完毕,那么我将使用“继续”转到下一条消息[j]。
但是,这非常低效-必须查看每封电子邮件,浏览已处理的订单#列表,然后处理是否尚未处理。
所有这些都源于Gmail将同一主题行电子邮件分组到一个线程中的事实,因此,当您标记新电子邮件时,它将有效地将它们全部标记。
有人知道这样做的更好方法,以便只处理全新的订单电子邮件/订单而不必查看较旧的电子邮件/订单并确定它们是否已被处理吗?
解决方法
Oleg Valter提供了正确的解决方案。在我的问题下方,请参阅上面的评论。
当电子邮件到达时,通过Gmail过滤器,我现在不仅为其添加标签,还可以为其加注星标。
在上面显示的代码中, ---处理订单---
然后我有以下代码:
if (!message.isStarred()) {
continue;
}
然后在脚本底部,然后循环回到顶部并获得下一条消息:
message.unstar();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。