日々たくさんのメールが届いています。中には大量のメールマガジンやらお知らせがあります。その場で読んですぐに削除するものもありますが、なかには「すぐには削除したくないけど数日後にはもう不要になってる」というメールがあります。
たとえば、明日のゴミ回収の種類を送ってくれるメール。これは明日まではとっておいてもいいけど、それ以降は不要になります。こういうのをすぐに削除すればいいのですが、なかなか昨日のメールをわざわざ削除するために確認する、というのは面倒です。
なので、一定期間のあとに自動で削除されるようにしました。
Google Apps Scriptで自動削除のスクリプトを作る
まぁ、実際は下記のブログ記事に書いてあるとおりにやればいいだけです。
手順を簡単に書いておくと
- Google Apps Scriptでプロジェクトを作成
- スクリプトを作成(ほぼコピペでOK)
- 保存して実行
- トリガーを設定
私が作成した(コピペで用意した)スクリプトは以下の通り。
function deleteOldGmails() {
var queries = [
'label:自動配信',
'category:promotions',
];
for(var i=0; i < queries.length; i++){
var query = queries[i];
Logger.log('削除開始:' + query);
var criteria = '' + query + ' older_than:90d -is:starred'
var deleteThreads = GmailApp.search(criteria);
Logger.log('該当スレッド: ' + deleteThreads.length + '件');
for (var j = 0; j < deleteThreads.length; j++) {
deleteThreads[j].moveToTrash();
}
Logger.log('' + query + 'の処理を終了')
}
}
'label:自動配信'で
「自動配信」のラベルが付いたものを、'category:promotions'
でプロモーションカテゴリーのメールを指定しています。
10行目の「older_than:90d」で90日以上古いもの、 「-is:starred」でスターが付いてないもの、という指定です。
(90日はちょっと長いかな?とも思うので今後調整していきます。)
トリガーは「12時間おき」に設定してあるので、12時間ごとにそこから90日以上前の「自動配信」もしくは「プロモーション」の、スターがついてないものが削除されます。
「自動配信」のラベルは、普通にGmailの機能でメールマガジンなどに付くようにしてあります。
まとめ
前々からこういうのがやりたかったのですが、調べてみたら案外簡単にできました。
最近GoogleフォトやGmail、Google Driveはまとめて15GBまでになりました。今回削除するようにしたメールはメルマガなどなので容量的にはそう大したことはないのですが、それでもだいぶスッキリします。
あと、これを機にいくつかいつの間にか購読するようになっていたYahoo系のメールニュースなどもけっこう解除しました。むしろこっちのほうが重要だったかもしれませんね。