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日以上前のメールはありません。`);
}
});
}
利用方法
- Googleドライブ(またはGmail)から Google Apps Script のエディタを開きます。
- 上記のコードを貼り付けて保存(Ctrl + S)します。
- 画面上の「実行」ボタンを押し、初回のみ表示される「アクセスの承認」を許可します。
- 7,000件を一気に減らしたい場合は、最初は「実行」ボタンを何回か手動でポチポチ押すと、100件ずつガリガリ削れていきます。
- あとは、左メニューの 「トリガー(時計マーク)」 から、「時間ベースのタイマー > 毎日1回実行」 のように設定しておけば、今後は完全自動で「30日経過したアラートメール」が新着タブから消え去るようになります。
このGASのロジックであれば、条件(older_than:14d にして14日間にするなど)も自由に変えられます。

