2014-10-17 64 views
0

我們正在嘗試在Gmail中向線索添加標籤。這兩個var的相同的輸出「2014/10月/發送」 但是隻有SentLabel2工作​​,如果我們設置SentLabel threads[i].addLabel(SentLabel);它失敗了。爲Gmail中的電子郵件添加標籤失敗

我們需要的是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); 

    } 
    } 

回答

0

爲什麼下面的語句失敗的原因是因爲SentLabel是一個字符串變量,而不是GMAILLABEL變量。

threads [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#

+0

哈哈姆我試過,並沒有工作,當我現在再試一次,它沒有工作>。<大聲笑,謝謝彼得! – 2014-10-18 12:45:51