繁体   English   中英

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

[英]Add label to emails in Gmail fails

我们正在尝试将Gmail中的标签添加到主题。 两个var都将相同的输出结果设置为“ 2014 / October / Sent”,但如果我们设置SentLabel threads[i].addLabel(SentLabel); ,则只有SentLabel2可以工作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);

    }
    }

您的以下语句失败的原因是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);

您可以在这里https://developers.google.com/apps-script/reference/gmail/gmail-label#了解有关GmailLabel类的信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM