はじめに
こんにちは。
先日ふと思ったのですが、Gmailめっちゃ溜まってて、いらないメールたくさんあるなと。
特にメールマガジンとか、マネーフォワードMEの出金のお知らせとか。。
フィルタでゴミ箱に勝手に移動してもいいけど、理想はGmailでアプリでプッシュ通知が来る受信箱に入れて、1度はメールに目を通したい。
そうだ、しばらくしたら勝手に消そう。
作戦
- Gmailでしばらくしたら消したいメールに任意のラベルを付加するフィルタ作成。
- GASで1で設定したラベルのメール検索して指定期間より前のメールを削除。
- GASのトリガーで毎日実行。
実装
- とりあえずマネーフォワードMEから来るメール(from:
feedback@moneyforward.com
)に対して、過去30日で自動削除
というラベルを付加するフィルタ作成1。 - GASは以下で行けた。
- GASの時間ベースのトリガーで0-1時に実行に設定。
GAS
code.gs
const deleteMail = () => {
let offset = 0;
const limit = 500;
const now = new Date();
const ymd = Utilities.formatDate(new Date(now.getFullYear(), now.getMonth(), now.getDate() - 30), 'Asia/Tokyo', 'yyyy/MM/dd');
while (true) {
var threads = GmailApp.search(`label:過去30日で自動削除 before:${ymd}`, offset, limit);
offset += limit;
for (thread in threads) {
for (key in threads[thread].getMessages()) {
if (threads[thread].getMessages()[key].isInTrash()) {
continue;
}
threads[thread].getMessages()[key].moveToTrash();
}
}
if (threads.length < limit) break;
}
}
おわりに
これでプッシュ通知でメールを即座に確認できるし、ほっといても勝手に消えるから、やりたいことは満たせた。けど、何かに会員登録するたびにフィルタ設定編集するのはめんどそう