Gmail の古いメールを自動削除することにした

Gmail が「保存容量の使用率が 83% になりました」と通知してきた。無料の 15GB を超えたくないので、課金せずに容量を空ける手順を記録しておくことにする。今回のポイントは、手動削除で終わらせず、Google Apps Script と時間主導型トリガーで「古いメールを自動的にゴミ箱に送る」仕組みを作ったところにある。Gmail の仕様上、ゴミ箱に入ったメールは 30 日で自動削除されるので、この単純な処理を毎日実行することにすれば良い。


1. きっかけ

Gmail のストレージ使用率が 83%(12.45GB/15GB)に達したのが始まりだった。Gmail・Google ドライブ・Google フォトは共通で 15GB を使う仕組みに変更されており、Gmail だけを使っているつもりでも全体で圧迫される。


2. 容量を圧迫していたものの確認

Gmail の検索クエリを使って、容量を食っている候補を絞った。使用したクエリは次の通り。

has:attachment larger:10M
older_than:2y
in:trash

これで以下のメールを特定できる。

  • 大きな添付ファイルを含むメール
  • 2 年以上前の古いメール
  • 既にゴミ箱にあるメール

プロモーションや SNS 通知も存在し得るため、それらも確認対象に含めた。


3. ゴミ箱が一度で空にならなかった理由

Web 版の Gmail で「ゴミ箱を空にする」を押しても一発でゼロにならなかった。これは Gmail が大量削除を段階的に処理する仕様のためである。数千件単位をいきなり削除するとサーバー側で分割処理が走る。

対応策は次の通り。

  • 数分待ってページを再読み込みし、再度「ゴミ箱を空にする」を実行する。
  • 別端末やメールクライアントの IMAP 同期を一時停止する。
  • Web 版 Gmail のみで削除を行う。

4. 大量削除の結果

今回は 2 年以上前のメールをすべて削除するルールで実施した。結果、容量は 12.45GB から約 3.3GB に減少し、使用率は約 22%。無料枠で十分な余裕が確保できた。


5. なぜ「一生分を保存できない」のか

Gmail が 2004 年に登場した当時、「一生分のメールを保存できる」と宣伝されていた。しかし当時のメールはテキスト中心であり、画像・HTML・通知メールが増えた現在とは前提が異なる。2013 年には Gmail・ドライブ・フォトが共通ストレージとなり、無制限保存モデルは終了した。したがって今は利用者が自分で削除方針を設ける必要がある。


6. 自動削除を行う Google Apps Script の作成

手動で削除するのは面倒なので、Google Apps Script で 2 年以上前のメールを自動でゴミ箱に送る処理を作成した。以下に再現可能な手順を残す。

6-1. スクリプトエディタを開く

  1. https://script.google.com にアクセス。
  2. 「新しいプロジェクト」をクリック。
  3. 空の Code.gs に以下のコードを貼り付ける。
function deleteOldMails() {
  var threads = GmailApp.search('older_than:2y');
  for (var i = 0; i < threads.length; i++) {
    threads[i].moveToTrash();
  }
}
  1. 左上の保存アイコンをクリックし、名前を GmailAutoDelete などにして保存。

6-2. コードの動作

  • GmailApp.search(‘older_than:2y’):2 年以上前のスレッドを検索。
  • moveToTrash():検索結果を順にゴミ箱へ移動。

Gmail の仕様で、ゴミ箱内のメールは 30 日で自動的に完全削除される。ゴミ箱を空にするような追加の削除処理を実装する必要はない。


7. トリガーの設定

このスクリプトを自動実行するために、時間主導型トリガーを設定する。

7-1. トリガー画面の開き方

  1. スクリプトエディタ左のメニューで「時計」アイコンをクリック(マウスを重ねると「トリガー」と表示)。
  2. 「このプロジェクトのトリガー」ページが開く。

7-2. トリガーの新規追加

  1. 右下の「+トリガーを追加」をクリック。
  2. 「実行する関数を選択」で deleteOldMails を選択。
  3. 「イベントのソースを選択」で 時間主導型 を選択。
  4. 「時間ベースのトリガーのタイプ」で「日タイマー」または「週タイマー」を選ぶ。今回は毎日実行に設定。
  5. 実行時刻を選び「保存」。

初回実行時には Google から Gmail アクセス許可を求められる。内容を確認し、承認しておく。


8. トリガーの確認と変更

設定済みのトリガーは一覧で確認でき、以下の変更が可能。

  • 実行頻度を「日次」から「週次」に変更
  • 実行時刻を変更
  • 一時停止や削除

テスト中に誤削除が発生した場合は、トリガーを削除すれば自動削除が停止する。


9. 結論

目的は「無料の 15GB を超えずに Gmail を使い続けること」だった。結果として 2 年以上前のメールを定期的に削除し、ストレージ使用率を低く維持できるようになった。課金不要で、完全自動で古いメールが整理される仕組みが完成した。