如果存在Gmail标签,请停止记录到电子表格



我喜欢将电子邮件的主题/发件人/日期/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。

最新更新