【发布时间】:2016-12-16 09:30:20
【问题描述】:
我正在使用以下内容来检索我的标签的线程和消息:
var threads = GmailApp.search("label:labelName to:forwarded@email.addr");
//Same result returned from using
//var threads = GmailApp.getUserLabelByName(labelName).getThreads();
for (var i=0; i<threads.length; i++){
var messages = GmailApp.getMessagesForThread(threads[i]);
for (var j=0; j<messages.length;j++){
var msg=messages[j].getPlainBody();
...
}
}
我正在成功检索数据。但是,有一些孤立的事件,其中发送到搜索中指定的地址且与标签无关的地址的消息聚集到线程中。我可以通过电子邮件帐户本身的“对话视图”来确认这一点。
我正在尝试仅检索与我的搜索条件匹配的消息,而不是属于线程成员但不属于标签成员的消息。我怎样才能可靠地做到这一点?
更新:
因此,经过广泛研究,我得出结论,目前脚本 API 无法做到这一点。但是,脚本现在可以通过将其作为资源启用,然后在您的 Google 开发人员中心启用 GMail API 来包含完整的 GMail API。使用完整的 GMail API,下面的代码可用于比较邮件标签,但使用 Scripts API 则无法做到这一点。我已提交功能请求here。
与上面的代码一致,下面将用于验证消息标签:
var abort=true;
var labelID="permenant_label_id"; //NOT label name.
//Compare message label
var compare=Gmail.Users.Messages.get('me', messages[j].getID());
for (var l=0; l<compare.labelIds.length;l++) {
//if abort==false then message verified against label.
abort = (compare.labelIds[l]!=labelID)?true:false;
if (!abort) break; //stop sorting labels
}
【问题讨论】: