Gmail: 頻繁に届くメールドメインを自動的にラベル付け整理するGoogle Apps Script (GAS)

ad

image

Contents

アップデート 2026

このPostは2023年に書いたスクリプトをアップデートしたPostです。 変更点は、ラベル付けした後に受信トレイにはメールを残さない点です。 受信トレイにメールを残さず、ラベルフォルダにメールを移動します。 より、メールチェックの効率を上げます。

概要

“Gmailを効率化: Google Apps Scriptを使用して、頻繁に送信する送信者からのメールに自動ラベルを付ける”

山のようなEメールをふるいにかけて、送信者のドメインごとにラベル付けするスクリプトです。

説明と目的

タスクのために毎日大量のメールを受信する中で、特定の送信者からのメールをもっと効率的に管理したいと感じたことはありませんか?このスクリプトは、頻繁に連絡を取るドメインからのメールに自動的にラベルを付けることで、そのようなニーズに対応します。

ステップ・バイ・ステップ・ガイド

  1. Google Driveをひらく
    Googleドライブの画面左上にある「+新規」ボタンをクリックし、「その他」から「Google Apps Script」を選択します。
  2. Apps Scriptのエディタをひらく
    スクリプトエディタで開いた新しいタブにスクリプトを貼り付けます。
  3. スクリプトを保存して実行する
    エディター上部の保存アイコンをクリックし、三角形の実行ボタンをクリックする。
  4. トリガーの設定
    新しいトリガーを追加し、このスクリプトを実行する頻度を設定するには、左側の時計 アイコンをクリックします。

コードの説明

このスクリプトは、Gmailの受信トレイのメールをスキャンし、送信者のドメインに基づいてメールを数えます。そして、一定数のメールを受信したドメインに自動的にラベルを作成し、適用します。

安全への配慮

このスクリプトは、メールの内容を読まずに送信者のドメイン情報のみを抽出します。ただし、トリガーやApps Scriptを利用する際には、パーミッションが要求されます。セキュリティの詳細については、Googleの公式ドキュメントを参照してください。

もし、スクリプト実行後にもとに戻したい場合

1. ラベル内のメールを全て選択
2. 受信トレイに移動 を実行
3. ラベルを削除
という手順で受信トレイへ戻すことができます。
また、アーカイブしたメールは「すべてのメール」でも確認ができます。

Sample Script

function labelAndArchiveFrequentSenders() {
  var threads = GmailApp.getInboxThreads();
  var sendersCount = {};
  
  // 1. 受信トレイのスレッドを解析してドメインごとの件数をカウント
  threads.forEach(function(thread) {
    var messages = thread.getMessages();
    messages.forEach(function(message) {
      var fromAddress = message.getFrom();
      // メールアドレスからドメイン部分を抽出
      var domainMatch = fromAddress.match(/@([^>]+)/);
      if (domainMatch) {
        var domain = domainMatch[1].replace('>', '').trim();
        sendersCount[domain] = (sendersCount[domain] || 0) + 1;
      }
    });
  });
  
  // 2. 閾値以上のドメインに対して処理を実行
  var threshold = 5; 
  
  for (var domain in sendersCount) {
    if (sendersCount[domain] >= threshold) {
      var label = GmailApp.getUserLabelByName(domain);
      if (!label) {
        label = GmailApp.createLabel(domain);
      }
      
      // 3. 受信トレイにある、対象ドメインからのメールを検索
      // label付与と同時にアーカイブ(受信トレイから消去)を行う
      var searchQuery = 'label:inbox from:@' + domain;
      var targetThreads = GmailApp.search(searchQuery);
      
      targetThreads.forEach(function(thread) {
        thread.addLabel(label);      // ラベルを付ける
        thread.moveToArchive();      // 受信トレイからアーカイブする
      });
    }
  }
}

ad