web-dev-qa-db-ja.com

特定のGmailラベルに関連付けられているすべてのメールアドレスを取得する

Gmailラベルに関連付けられているすべてのメールアドレスのリストを取得する方法

つまり、 this 質問と同様の方法ですが、特定のラベルに制限されています


注:私はここに投稿しますあなた自身の質問に答えます-あなたの知識を共有します、Q&Aスタイル。私は前述の質問に答えを投稿するのに十分な担当者がいないからです。

1
Basj
  1. http://script.google.com で新しいスクリプトを作成し、
  2. 以下のコードを過ぎて、
  3. メニューを開き、(公開)>(Webアプリの展開...)を選択し、スクリプトURLをコピーして貼り付けます(*)
  4. URLを使用してスクリプトを実行します(Gmailに関する許可の質問を受け入れます):

    https://script.google.com/macros/s/.../dev?label=nameofthelabel
    

    スプレッドシートなどを必要とせずに、ブラウザで直接 アドレスを表示 します。

コード:

function doGet(e) {
    var max = 100;
    var offset = 0;
    var searchThreads = [];
    var addresses = [];

    while (true) {
      var threads = GmailApp.search("label:" + e.parameter.label, offset, max);
      searchThreads = searchThreads.concat(threads);
      if (threads.length < max) { break; }
      offset += max;
    }  

    for (var i = 0; i < searchThreads.length; i++) {
      var messages = searchThreads[i].getMessages();
      for (var j = 0; j < messages.length; j++) {
        addresses.Push(messages[j].getFrom());
      }
    }

    function onlyUnique(value, index, self) { return self.indexOf(value) === index; }
    var addr = addresses.filter(onlyUnique).join('\n');

    return ContentService.createTextOutput(addr).setMimeType(ContentService.MimeType.TEXT);
}

(*)末尾が/devの「最新のコード」リンクを選択すると、詳細な here のように、コードを少し変更するたびに再デプロイする必要がなくなります。

1
Basj