【发布时间】:2019-11-27 22:02:21
【问题描述】:
我有一个 Google Apps 脚本,它解析带有“传入”标签的线程,将它们触发到 webhook,然后将它们标记为“已发送”。
function send() {
var label = GmailApp.getUserLabelByName('incoming');
var sentlabel = GmailApp.getUserLabelByName('sent');
var messages = [];
var threads = label.getThreads();
for (var i = 0; i < threads.length; i++) {
messages = messages.concat(threads[i].getMessages())
}
for (var i = 0; i < messages.length; i++) {
var message = messages[i];
Logger.log(message);
var payload = {
"from": message.getFrom(),
"to": message.getTo(),
"cc": message.getCc(),
"date": message.getDate(),
"subject": message.getSubject(),
"txtbody": message.getPlainBody()
};
var options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload),
};
var webhookUrl = '<redacted>';
UrlFetchApp.fetch(webhookUrl, options);
}
// remove the label from these threads so we don't send them to
// slack again next time the script is run
label.removeFromThreads(threads);
Utilities.sleep(200);
sentlabel.addToThreads(threads);
for (var i = 0; i < threads.length; i++) {
threads[i].moveToArchive();
}
}
问题是,因为这些电子邮件是由服务生成的,它们具有相似的主题 - 有时是相同的主题(我无法在服务中更改)
假设主题是“X1 更新”。
当收到“X1 更新”的电子邮件时 - 脚本运行良好,无需担心将其发送出去。
但是,如果出现新的“X1 更新”,它会同时发送新的和旧的,因为 Gmail 标记了整个线程。
这会导致大量重复。我该如何解决这个问题?
【问题讨论】:
标签: javascript google-apps-script gmail