イントロダクション

GmailとGAS(GoogleAppsScript)を用いて、メール受信から30日後にスターをつけていないメールを自動で削除するシステムを作ります。

こんな人におすすめ

  • ECサイトのセールスメールがたくさん来る
  • 直接自分に関係のないメールもCCでどんどんメールがくるような職場に勤めている
  • 監視システム的なものからアラートがメールが届く
  • そんなメールでGmailの容量がパンクしそう

使用するプログラム

function auto_delete() {
 var delayDays = 30;
 var deleteLabel = "保存する場合はスター";
 var deleteThreads = GmailApp.search('older_than:'+delayDays+'d -is:starred label:'+ deleteLabel);
  for (var i = 0; i < deleteThreads.length; i++) {
  deleteThreads[i].moveToTrash();
  }
}

プログラムの解説

2行目はメールを削除するまでの日数を設定しています。30を7にすればメール受信から7日後に削除します。365にすると1年になります。
3行目は削除するメールのラベル名を指定します。この名前のラベルが付いているメールのみ、delayDay日後にメールを削除します。
4行目で削除対象のメール(スレッド)を配列で格納しています。
「受信から30日以上たっている(older_than:30d)」かつ「スターがついていない(-is:starred)」かつ「保存する場合はスターラベルが付いている(label:保存する場合はスター)」メールです。
5行目からのループで、削除メール(スレッド)をゴミ箱に移動させています。

GAS(GoogleAppsScript)の設定

  1. GoogleAppsScriptにアクセスして、Gmailと同じアカウントでログイン。
  2. 新しいプロジェクトを作成する
  3. 前述のプログラムをコピペしてsaveプロジェクトを保存
  4. 新しいトリガーを追加
  5. 実行する関数を選択→「auto_delete」
    実行するデプロイを選択→「Head」
    イベントのソースを選択→「時間主導型」
    時間ベースのトリガーのタイプを選択→「日付ベースのタイマー」
    時刻を選択→「午前0時〜1時」
    エラー通知設定→「毎日通知を受け取る」
    と設定して保存

仕上げ

最後にGmailの「メールの自動振り分け」設定で、「保存する場合はスター」ラベルをメールにつけるルールを作成します。
これで毎日午前0時〜1時に、GASが実行されて受信から30日たった「保存する場合はスター」ラベルのメールをゴミ箱に移動します。
未読か既読かは関係なく、「スターを付ける」というオプトイン的行為を行ったメールを残します。