我喜欢通过电子邮件标签将电子邮件的主题/发件人/日期/ ID记录到电子表格中,然后添加"录制的"一旦将电子邮件记录到电子表格中,就会将其标记为电子邮件。我喜欢再次运行脚本,而无需重新录制带有标签的电子邮件" Recorded"
我可以将其记录到电子表格并添加标签。但是我运行脚本的所有东西都会重新抓住一切。
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
是保留现有标签。
答案 0 :(得分:0)
您可以尝试用以下代码替换var threads:
var threads = GmailApp.search('label:(Test -Recored)');
这将搜索所有带有测试但未记录的标签 你不再需要var searchlabel了。
答案 1 :(得分:0)
您应该使用搜索方法,因为它可以过滤属于特定标签的电子邮件。这是修改后的版本。
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);
}
}