メールってやつはプッシュ型のタスク生成・情報取得ツールとしてすげー便利に使ってるのですが、受信トレイを綺麗に保つのには不断の努力が必要で、放っておくとすぐに管理不能な状態にまで膨れあがってしまう(いちおう、いわゆる Inbox Zero を理想として、とはいえそこからは遠いところにいます)。
ちょっと見ないすきに溜まったメールをザザーッと処理するんだけど、毎回これアーカイブしてるよな……と思うものもある。こういうものを機械に処理させられないとしたら、それは技術の敗北である。というわけでなんとかしたい。たとえば、最新情報であったり現在のステータスを知るために受け取ってるメールってのは、定期的に増えてくる一方で、古くなったものには価値がないので、勝手に消えていってほしいわけです。
具体的には、以下のようなメールを自動で処理したい。
- 【毎日更新】Kindle日替わりセール
- 前日のやつは不要
- 〇〇さんの今日の予定リスト(午前 5 時現在)
- Google カレンダーが送ってきてくれるやつ。前日のやつは不要
- ニュース系
- 一週間以上ためこむと読む気にならないので読まずにアーカイブしてる
- カレンダーの招待
- すでに終わったイベントの招待は自動でアーカイブできるはず
つわけで Google Apps Script を書きました。リポジトリはここです。
GitHub - motemen/gas-gmail-scripts
以下のスクリプトは main
という名前の関数を定期的に実行する想定で書かれてます。script.google.com から新規スクリプトを作成して、時間ベースのトリガを設定してください。
指定日数が経ったら自動でアーカイブする
https://github.com/motemen/gas-gmail-scripts/blob/master/dist/expire.js
+expires-1d
というラベルがついたメールのうち、1日以上古いものを自動でアーカイブします。1日経つと情報が古くなるようなメール(Kindle日替わりセールとか)に Gmail のフィルタでこのラベルをつけておけば OK。
実は +expires-
以降は自由で、アーカイブ対象とするメールの検索条件に older_than:
として渡されるだけなので、+expires-7d
とか +expires-1m
とかいうラベルでも有効です。かしこい。
Google カレンダーの招待で、すでに終わったものを自動でアーカイブする
https://github.com/motemen/gas-gmail-scripts/blob/master/dist/archive-stale-calendar-invitations.js
見出しのとおり。Google カレンダーの招待メールに添付されている invite.ics ファイルをかんたんに解析して、イベントの終了時刻を過ぎていたらアーカイブします。iCal 形式のファイルの解析をしてるけど、タイムゾーンの対応は面倒なので UTC で書かれているものしか対応していない。Google カレンダーは ics ファイルの中身を UTC で書いてるみたいなので、特に問題はないと思います。
書いてて思ったけど、イベントの更新があったら古い招待をアーカイブするってのがあってもいいかもしんないですね。PR 期待してます。
どうぞご利用ください。