向Gmail中的电子邮件添加标签失败

时间:2014-10-17 17:22:53

标签: javascript google-apps-script gmail

我们正尝试在Gmail中添加一个标签给线程。两个var都输出相同的输出“2014/10月/已发送” 但只有SentLabel2可以工作,如果我们设置SentLabel threads[i].addLabel(SentLabel);就失败了。

我们需要它成为SentLabel因为我们已经完成了这样的自动月份事件(这会得到一个月份,这样我们就不需要每个月手动进入脚本并更改变量):

  var SentLabel = "2014/" + monthInWords[d.getMonth()] + "/Sent";

现在看来是这样的:

 function wtf2() {
        var SentLabel = "2014/October/Sent";
        var SentLabel2 = GmailApp.getUserLabelByName("2014/October/Sent");


      var threads = GmailApp.getInboxThreads(0, 5);
      for (var i = 0; i < threads.length; i++) {
        var labels = threads[i].getLabels()[0];          
     threads[i].addLabel(SentLabel);

    }
    }

1 个答案:

答案 0 :(得分:0)

你的声明失败的原因是因为SentLabel是一个字符串变量,而不是gmailLabel变量。

  

线程[I] .addLabel(SentLabel);

要解决此问题,您需要有条件地创建一个gmailLabel变量(我将调用此var标签),具体取决于它是否已存在。以下是如何做到的:

 var label = GmailApp.getUserLabelByName(SentLabel);  //declares a variable called label and initializes it to be the value thats returned when searching GmailApp for any label that is named the same as the string you provided in your SentLabel variable

    if (label) { //if gmail finds a matching label
      Logger.log('Label exists.');
    } else {
      Logger.log('Label does not exist. Creating it.');
      label = GmailApp.createLabel(SentLabel);
    }

一旦运行,那么您将拥有一个标签变量,如果您将其更改为此语句,则您的语句将起作用:

threads[i].addLabel(label);

您可以在此处阅读有关GmailLabel课程的信息,https://developers.google.com/apps-script/reference/gmail/gmail-label#