我有一个过滤器,可以在所有收到的电子邮件中添加“未处理”标签。
然后,Google脚本会每分钟搜索具有“未处理”标签的任何电子邮件主题,处理这些消息,并有条件地将标签应用于相应的主题。
我不知道我做错了什么,但只有一些处理过的线程得到了标签。它随机工作......例如,6个线程中只有3个获得了标签,或者3个中的1个。
我必须重新应用“未处理”标签,然后再次运行脚本来修复它们。
function processGmail() {
var startTime = new Date().getTime();
var mailerRegex = /X-Mailer:(.*)/g;
var scannerLabel = GmailApp.getUserLabelByName("Scanner");
var unprocessedLabel = GmailApp.getUserLabelByName("unprocessed");
var countMessages = 0;
GmailApp.search("label:unprocessed").forEach(
function(emailThread) {
emailThread.getMessages().forEach(
function(message) {
var raw = message.getRawContent();
var result;
var doReturn = false;
while((matches = mailerRegex.exec(raw)) !== null) {
if (matches.some(function(match){return match.indexOf('Canon MFP') >= 0;})) {
emailThread.addLabel(scannerLabel);
emailThread.moveToArchive();
doReturn = true;
break;
}
}
emailThread.removeLabel(unprocessedLabel);
++countMessages;
if (doReturn) {
return;
}
}
);
}
);
var endTime = new Date().getTime();
Logger.log("Processed " + countMessages + " in " + (endTime-startTime) + "ms.");
}
答案 0 :(得分:1)
原来这个bug与Javascript有关。
我忘记了regex.exec
需要循环,直到返回null,然后才会为新输入启动a-new。
该修复程序正在删除break
:)