我喜欢将电子邮件的主题/发件人/日期/ID记录到电子表格中,并在将电子邮件记录到电子表格中后将其添加到电子邮件中。我喜欢在不重新录制电子邮件的情况下再次使用标签"录制"
重新录制电子邮件我可以将其录制到电子表格和添加标签的录制点。但是我运行的脚本的所有内容又可以抓住一切。
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var searchlabel = GmailApp.getUserLabelByName("Test");
var newlabel = GmailApp.getUserLabelByName("Recored");
var threads = searchlabel.getThreads();
for (var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var from = messages[j].getFrom();
var dat = messages[j].getDate();
var id = messages[j].getId();
var current = new Date();
ss.appendRow([current, dat, sub, id, from])
}
threads[i].addLabel(newlabel);
}
}
我已经搜索了论坛,一切倾向于建议删除现有标签并将其重命名为其他标签。但是我想要的enter code here
是保留现有标签。
您应该使用搜索方法,因为它使您可以过滤属于特定标签的电子邮件。这是修改版本。
function myFunction() {
var ss = SpreadsheetApp.getActiveSheet();
var searchlabel = GmailApp.getUserLabelByName("Test");
var recordlabel = GmailApp.getUserLabelByName("Recorded");
var threads = GmailApp.search("label:Test -label:Recorded");
for (var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
for (var j=0; j<messages.length; j++)
{
var msg = messages[j].getBody();
var sub = messages[j].getSubject();
var from = messages[j].getFrom();
var dat = messages[j].getDate();
var id = messages[j].getId();
var current = new Date();
ss.appendRow([current, dat, sub, id, from])
}
threads[i].addLabel(recordlabel);
}
}
您可以尝试用:
替换VAR线程var threads = GmailApp.search('label:(Test -Recored)');
这将搜索所有带有测试但未收回的标签。
您将不再需要var SearchLabel。