時間が経過すると自動的にメールを削除するGmailフィルターをつくる
メールを自動的に振り分けるために私は実にたくさんのGmailフィルターを作りますが、一つの難点はMacのMail.appにあるようなスマートフォルダを作成して、自動的に古いメールを削除するといったことができない点でした。
というのも、フィルターはメールが届いた時点で動作するもので、タイマーのように時間が経過してから発動するものではないからです。
しかし本家Lifehackerの記事経由で知ったjohnedayのブログ記事でGoogle Apps Scriptという仕組みを利用してこうした時間経過で発動するフィルターを作る方法があることを知りました。
どちらの記事にも詳しいステップが割愛されていましたので、そのあたりを埋めつつご紹介します。### Google Apps Scriptsを作成する
Google Apps Scriptはクラウドベースの Javascript 実行プラットフォームで、Google Appsを拡張するために使えます。
スクリプトはサイト上で作成して、実行はGoogleのサーバー上で行われるという特徴があります。
まず、Google Apps Scriptのページをアクセスして、新しいスクリプトを作成します。
「空のプロジェクト」を選択して、エディタを開きましょう。
簡単なJavascriptのコードを入力します。ソースコードは元記事からコピーすることができます。
ここで2箇所改変するところがあり、delayDays という変数に入っている 2 という数字を任意の数字に変えられます。この数字が「x 日後に削除」という部分の設定です。
もう一箇所は、“delete me” と書かれている場所で、ここに任意のラベルの名前を入れます。このラベルにおいて先ほどの日数が経過したメールが自動的に削除されます。
スクリプトを保存し、実行するとGmailアカウントへのアクセスを承認するためのポップアップが表示されます。もちろん自己責任で願います。
これでこのスクリプトの動作を確認できますが、最後にトリガーを用意して自動的に実行されるようにしておきます。
時計のアイコンをクリックしてトリガーを表示させ、任意の時間帯でスクリプトを実行します。一日に1度とか、週に一度といった形でいいのではないでしょうか。
同様のスクリプトは、「2日後にメールは自動的にアーカイブする」という具合に変更することもできます。この場合は label:inbox is:read older_than:2d といった検索をかけ、moveToArchive() メソッドでスレッドをアーカイブにいれます(スクリプトは元記事にありますので参照してください)。
もうちょっと頑張れば、複数のラベルについて任意の時間フィルターをかけたり、既読のものはアーカイブするといった自在のスクリプトを組むことができそうです。これほど便利なら Google App Scriptをもうちょっと勉強するモチベーションにつながりますね。
自動化万歳!