2015-02-07 111 views
1

標籤這是我的第一篇文章:)剔除從谷歌Apps腳本

我使用的是谷歌Apps腳本跟蹤電子郵件從過去的7天已經沒有響應(基本上跟蹤電子郵件,其中我的信息是最後一個)。

這是這裏的代碼:

// This script searches Gmail for conversations where I never received a response 
// and puts them in a NoResponse label 

var DAYS_TO_SEARCH = 7; // look only in sent messages from last 7 days, otherwise script takes a while 
var SINGLE_MESSAGE_ONLY = false; // exclude multi-message conversations where I sent the last message? 

function label_messages_without_response() { 
    var emailAddress = Session.getEffectiveUser().getEmail(); 
    Logger.log(emailAddress); 
    var EMAIL_REGEX = /[a-zA-Z0-9\._\-][email protected][a-zA-Z0-9\.\-]+\.[a-z\.A-Z]+/g; 
    var label = GmailApp.createLabel("AwaitingResponse"); 
    var d = new Date(); 
    d.setDate(d.getDate() - DAYS_TO_SEARCH); 
    var dateString = d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate(); 
    threads = GmailApp.search("in:Sent after:" + dateString); 
    for (var i = 0; i < threads.length; i++) 
    { 
    var thread = threads[i]; 
    if (!SINGLE_MESSAGE_ONLY || thread.getMessageCount() == 1) 
    { 
     var lastMessage = thread.getMessages()[thread.getMessageCount()-1]; 
     lastMessageSender = lastMessage.getFrom().match(EMAIL_REGEX)[0]; 
     if (lastMessageSender == emailAddress) 
     { 
     thread.addLabel(label); 
     Logger.log(lastMessageSender); 
     } 
    } 
    } 
} 

的問題是在目前,當腳本運行時未回覆郵件會進入「NORESPONSE」標籤,這是偉大的。但是,當我從電子郵件中刪除標籤時,我不需要跟進,當腳本再次運行時,它們會再次返回。

我的問題是:

會會有一個標籤,適用於不需要上進行隨訪,然後制定其寫入腳本,使腳本知道到消息的方式排除該標籤?

任何幫助將是非常美妙的:)

感謝 艾丹

+0

確保你所熟悉的談話中的標籤是如何工作的,而不是個別職位。要使基於標籤的工作流程正常工作,您需要在線程級別應用/刪除標籤,而不是消息級別。如果標籤例如將包括應用了標籤的線程的子消息,則搜索不存在。如果你保持警惕,你會感到沮喪但可行。 – Jonathon 2015-02-08 11:28:30

回答

0

可能是腳本可以申請兩個標籤 - NORESPONSE和處理。您可以手動刪除NoResponse標籤,但Processed標籤將保留。

過濾器可以被修改,如:

threads = GmailApp.search("in:Sent -in:Processed after:" + dateString); 
+0

根據我對OP的意見,請注意搜索和標籤互動的方式。該API至少與用戶界面相匹配,但基於標籤/星型工作流程存在缺陷。一個不顯着的邊緣情況總是用於處理的線程,然後接收新的消息。 – Jonathon 2015-02-08 11:29:55