Gmail が「保存容量の使用率が 83% になりました」と通知してきた。無料の 15GB を超えたくないので、課金せずに容量を空ける手順を記録しておくことにする。今回のポイントは、手動削除で終わらせず、Google Apps Script と時間主導型トリガーで「古いメールを自動的にゴミ箱に送る」仕組みを作ったところにある。Gmail の仕様上、ゴミ箱に入ったメールは 30 日で自動削除されるので、この単純な処理を毎日実行することにすれば良い。
1. きっかけ
Gmail のストレージ使用率が 83%(12.45GB/15GB)に達したのが始まりだった。Gmail・Google ドライブ・Google フォトは共通で 15GB を使う仕組みに変更されており、Gmail だけを使っているつもりでも全体で圧迫される。
2. 容量を圧迫していたものの確認
Gmail の検索クエリを使って、容量を食っている候補を絞った。使用したクエリは次の通り。
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. スクリプトエディタを開く
- https://script.google.com にアクセス。
- 「新しいプロジェクト」をクリック。
- 空の Code.gs に以下のコードを貼り付ける。
var threads = GmailApp.search('older_than:2y');
for (var i = 0; i < threads.length; i++) {
threads[i].moveToTrash();
}
}
- 左上の保存アイコンをクリックし、名前を GmailAutoDelete などにして保存。
6-2. コードの動作
- GmailApp.search(‘older_than:2y’):2 年以上前のスレッドを検索。
- moveToTrash():検索結果を順にゴミ箱へ移動。
Gmail の仕様で、ゴミ箱内のメールは 30 日で自動的に完全削除される。ゴミ箱を空にするような追加の削除処理を実装する必要はない。
7. トリガーの設定
このスクリプトを自動実行するために、時間主導型トリガーを設定する。
7-1. トリガー画面の開き方
- スクリプトエディタ左のメニューで「時計」アイコンをクリック(マウスを重ねると「トリガー」と表示)。
- 「このプロジェクトのトリガー」ページが開く。
7-2. トリガーの新規追加
- 右下の「+トリガーを追加」をクリック。
- 「実行する関数を選択」で deleteOldMails を選択。
- 「イベントのソースを選択」で 時間主導型 を選択。
- 「時間ベースのトリガーのタイプ」で「日タイマー」または「週タイマー」を選ぶ。今回は毎日実行に設定。
- 実行時刻を選び「保存」。
初回実行時には Google から Gmail アクセス許可を求められる。内容を確認し、承認しておく。
8. トリガーの確認と変更
設定済みのトリガーは一覧で確認でき、以下の変更が可能。
- 実行頻度を「日次」から「週次」に変更
- 実行時刻を変更
- 一時停止や削除
テスト中に誤削除が発生した場合は、トリガーを削除すれば自動削除が停止する。
9. 結論
目的は「無料の 15GB を超えずに Gmail を使い続けること」だった。結果として 2 年以上前のメールを定期的に削除し、ストレージ使用率を低く維持できるようになった。課金不要で、完全自動で古いメールが整理される仕組みが完成した。