Gmail 「新着」・「プロモーション」・「ソーシャル」のメールを自動削除

GASを利用して「新着」などのタブを自動アーカイブ

最近になって知ったのですが、Gmailの「新着」・「プロモーション」・「ソーシャル」のタブのメールて手動でアーカイブとか削除しないとそのタブ内に留まるですね。
「新着」というので、30日間とか一定の日数以上になると自動でアーカイブとかなると思っていたのでそのままにしていると7000通くらい溜まっていました

手動でアーカイブしてもいいですが、自動でアーカイブしたいので、「Google Apps Script(GAS)」を利用して、「新着」・「プロモーション」・「ソーシャル」のタブのメールで30日間経過したのはアーカイブするようにしました

実装するためのコード

以下のコードをGASのエディタに貼り付けると利用できます

基本仕様

  • 対象範囲: 「新着」「プロモーション」「ソーシャル」の3つのタブ
  • 抽出条件: 内部的に受信トレイ(Inbox)に残っている、かつ30日以上前のメール
  • 処理内容: 該当メールを「受信トレイ」から外し、既にあるタグ(ラベル)の中だけに自動で残す(アーカイブ)
  • 安全対策: GASの処理落ち(タイムアウト)を防ぐため、1回の実行につき各カテゴリ最大100件までを上限として処理

利用するコード

function archiveOldAllCategories() {
  // 一括処理したいカテゴリの配列(コメントアウトを解除して有効化)
  const categories = ['updates', 'promotions', 'social'];
  
  // 各カテゴリをループ処理
  categories.forEach(category => {
    // クエリを動的に生成(例: category:updates label:inbox older_than:30d)
    const searchQuery = `category:${category} label:inbox older_than:30d`;
    
    // 安全のため各カテゴリごとに上限100件で検索
    const threads = GmailApp.search(searchQuery, 0, 100);
    
    if (threads.length > 0) {
      // 該当したスレッドを一括アーカイブ
      GmailApp.moveThreadsToArchive(threads);
      console.log(`[${category}] 30日以上前のメール ${threads.length}件をアーカイブしました。`);
    } else {
      console.log(`[${category}] 30日以上前のメールはありません。`);
    }
  });
}

利用方法

  1. Googleドライブ(またはGmail)から Google Apps Script のエディタを開きます。
  2. 上記のコードを貼り付けて保存(Ctrl + S)します。
  3. 画面上の「実行」ボタンを押し、初回のみ表示される「アクセスの承認」を許可します。
  4. 7,000件を一気に減らしたい場合は、最初は「実行」ボタンを何回か手動でポチポチ押すと、100件ずつガリガリ削れていきます。
  5. あとは、左メニューの トリガー(時計マーク) から、時間ベースのタイマー > 毎日1回実行 のように設定しておけば、今後は完全自動で「30日経過したアラートメール」が新着タブから消え去るようになります。

このGASのロジックであれば、条件(older_than:14d にして14日間にするなど)も自由に変えられます。

\ 最新情報をチェック /

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です