У меня есть эта функция, которую я запускаю ежечасно. Он проверяет входящие сообщения на наличие сообщений в списке рассылки. Затем он немного форматирует их, сохраняет вложения и пересылает их по другому адресу электронной почты, а затем якобы выбрасывает обработанные сообщения. Работает довольно хорошо, кроме ....
Я недавно столкнулся с потоком, который просто не будет d ie. Он получил более 50 ответов, и когда приходят новые ответы с той же строкой темы, все старые сообщения в потоке, которые уже были обработаны, снова обрабатываются. Таким образом, мой отправленный ящик растет в геометрической прогрессии, как и почтовый ящик получателя. Я не уверен, что я просто не удаляю отправленные сообщения эффективно, или есть какой-то другой способ, которым я должен идентифицировать уже обработанные сообщения в потоке, чтобы они не обрабатывались снова, когда больше сообщений добавлено в поток , Я не могу сказать, если это проблема со скриптом приложения или проблема с Gmail.
Вот мой код:
function processPMFMail(){
var threads = GmailApp.getInboxThreads();
var message = GmailApp.getMessagesForThreads(threads);
for(var i = 0; i < message.length; i++) {
for(var j = 0; j < message[i].length; j++) {
var from = message[i][j].getFrom();
var to = message[i][j].getTo();
var cc = message[i][j].getCc();
var bcc = message[i][j].getBcc();
var fields = {to, cc, bcc};
//Logger.log(to);
if (
[to,cc,bcc].some(field =>
["EMAIL-1","EMAIL-2"].some(email => field.includes(email))
)
) {
var subject = cleanSubject(message[i][j]);
if (subject == "DoNotPost") {
Logger.log("Email not for posting - " + cleanSubject(message[i][j]));
message[i][j].moveToTrash();
} else{
var from = parseEmailName(message[i][j]);
var body = message[i][j].getPlainBody();
var hBody = message[i][j].getBody();
var attachment = saveAttachments(message[i][j]);
var opening = "<br>From: " + from + "<br> Sent: "+ Utilities.formatDate(message[i][j].getDate(), "US/Eastern", "M/d/yy @ h:mm aaa") + "<br><br>" + attachment;
if (hBody.indexOf("</body>")>-1) {
hBody = removeForwards (hBody);
hBody = hBody.replace("</body>",opening + "</body>").trim();
} else{
hBody = hBody + opening;
}
Logger.log(subject + opening);
//send the message
GmailApp.sendEmail("EMAIL-3", subject , opening + body ,
{htmlBody: hBody,
name: from
})
} // end of processed messages
//move the message to the trash
message[i][j].moveToTrash();
}
else {Logger.log("No Messages to forward")}
}
}
}
Любые указатели с благодарностью оценены.
-DH