イントロダクション
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)の設定
- GoogleAppsScriptにアクセスして、Gmailと同じアカウントでログイン。
- 新しいプロジェクトを作成する
- 前述のプログラムをコピペして プロジェクトを保存
- 新しいトリガーを追加
- 実行する関数を選択→「auto_delete」
実行するデプロイを選択→「Head」
イベントのソースを選択→「時間主導型」
時間ベースのトリガーのタイプを選択→「日付ベースのタイマー」
時刻を選択→「午前0時〜1時」
エラー通知設定→「毎日通知を受け取る」
と設定して保存
仕上げ
最後にGmailの「メールの自動振り分け」設定で、「保存する場合はスター」ラベルをメールにつけるルールを作成します。
これで毎日午前0時〜1時に、GASが実行されて受信から30日たった「保存する場合はスター」ラベルのメールをゴミ箱に移動します。
未読か既読かは関係なく、「スターを付ける」というオプトイン的行為を行ったメールを残します。