如果存在 Gmail 标签,则停止记录到电子表格
Stop recording to spreadsheet if Gmail Label exist
我喜欢通过标签将电子邮件的 Subject/Sender/Date/ID 记录到电子表格中,并在将电子邮件记录到电子表格后向其添加 "Recorded" 标签。我喜欢再次 运行 脚本,而无需重新录制带有标签 "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
是保留现有的标签。
您可以尝试将 var threads 替换为:
var threads = GmailApp.search('label:(Test -Recored)');
这会搜索所有带测试但不带 Recored 的标签。
您将不再需要 var searchlabel。
您应该使用搜索方法,因为它可以让您过滤属于特定标签的电子邮件。这是修改后的版本。
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);
}
}
我喜欢通过标签将电子邮件的 Subject/Sender/Date/ID 记录到电子表格中,并在将电子邮件记录到电子表格后向其添加 "Recorded" 标签。我喜欢再次 运行 脚本,而无需重新录制带有标签 "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
是保留现有的标签。
您可以尝试将 var threads 替换为:
var threads = GmailApp.search('label:(Test -Recored)');
这会搜索所有带测试但不带 Recored 的标签。
您将不再需要 var searchlabel。
您应该使用搜索方法,因为它可以让您过滤属于特定标签的电子邮件。这是修改后的版本。
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);
}
}