我使用以下内容检索标签的线程和消息:
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();
...
}
}
我正在成功检索数据。但是,存在一些孤立的事件,其中发送到不是搜索中指定的地址且与标签无关的地址的消息会聚集到该线程中。我可以通过&#34;会话视图&#34;来确认这一点。在电子邮件帐户中。
我试图检索与我的搜索条件匹配的消息,而不是那些是线程成员而不是标签成员的消息。我怎样才能可靠地做到这一点?
因此经过广泛的研究后,我得出结论,目前使用脚本API是不可能的。但是,脚本现在可以通过将其作为资源启用,然后在您的Google Developer Center中启用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
}
答案 0 :(得分:1)
因此,经过广泛的研究,我已经得出结论,目前使用脚本API是不可能的。但是,脚本现在可以通过将其作为资源启用,然后在您的Google Developer Center中启用GMail api来包含完整的GMail API。使用完整的GMail API,下面的代码可用于比较消息标签,但使用Scripts API无法实现这一点。
使用上面的代码,以下代码将用于验证邮件标签:
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
}
答案 1 :(得分:0)
在迭代线程中的消息时,可以使用getTo()函数。然后检查getTo()的结果是否是您要搜索的值。
希望我能正确理解你的问题和目标。
答案 2 :(得分:0)
您可以尝试Class GmailLabel中的给定方法,例如removeFromThread(thread)
或removeFromThreads(threads)
,其中这些方法从给定的线程中删除标签并强制线程刷新。
更多信息也可以在 - Create time-based Gmail filters with Google Apps Script
中找到