2017-03-28 7 views
2

「Apps script queue」というラベルでメッセージを検索し、これらの特定のメッセージ(スレッド全体ではない)に新しいラベルを付けることはできますか?Google Apps ScriptでGmailメッセージにラベルを付ける(スレッド全体ではない)

GmailApp.search( 'label:Apps script queue')を使用すると、リクエストされたメッセージが表示されますが、これらのメッセージに新しいラベルを割り当てると、(メールボックスの他の場所の)同じラベルを取得します。それは私が望むものではありません。

答えて

0

Gmailでは、ラベルはスレッドに適用され、スレッドの1つのメールには適用できません。

ただし、個々のメッセージに星や色を適用できます。

+0

Gmailインターフェースで個々のメッセージにラベルを付けることができるため、これは可能ではないとは思えません。今まで私はあなたがGmailでできること全てを体験しましたが、あなたはApps Scriptを行うことができます。 – Vincent

0

このコードは、スレッド内の特定のメッセージにラベルを追加する際にエラーを返さず、スレッドリストメソッドを使用すると、特定のmessageID(別々に扱われる)にしか置かれないことがわかります。しかし、あなたのUI(Gmailサイト)が会話モードになると、両方のラベルで表示されます。

function searchMail(){ 
    var threads = GmailApp.search("SOME SEARCH"); 
    Logger.log(threads.length); 
    listLabel('me'); 
    for (var i = 0; i < threads.length; i++) { 
    var messages = threads[i].getMessages(); 
    Logger.log(messages.length); 

    for (var j = 0; j < messages.length; j++){ 
     if (messages[j].isInInbox()){ 
     Logger.log('me' + 'id msg: ' + messages[j].getId()); 
     //Add label to the first reply 
     addLabel('me',messages[1].getId()); 
     } 
     else{ 
     Logger.log('me' + 'id msg: ' + messages[j].getId() +" not in inbox"); 
     } 
    } 
    } 
} 

function addLabel(userId, messageId){ 

    var resource = {addLabelIds: ["Label_6"]} 

    Gmail.Users.Messages.modify(resource, userId, messageId); 

} 
+0

ありがとうございます。ここには受信トレイは関係ありません。スレッド内のすべてのメッセージをループするときには、「SOME SEARCH」というラベルの付いたメッセージだけを再度検索する必要があります。そして、これらのメッセージだけを「私」に改名する必要があります。 – Vincent

関連する問題