Gmail自動削除の方法
目次
前書き
どうも、高島です。
gmailって、何もしないとどんどん貯まっていきます。
容量を食うので定期的に削除しようと思います。
googleカレンダーのメールやソーシャルサイトからのメールは、単なる通知メールですので、数日で消してしまっていいです。
これらを自動で消していこうと思います。
- どうやって?
Google Apps Scriptを使います。 これでgmailのサービスにアクセスして、条件に合ったメールを 定期的にゴミ箱に移動させます。
- 方法は?Gmail編。
gmailのフィルタ機能を使って、メール受信時に自動でラベルを付けます。
- 方法は?Google Apps Script編。
ラベルが付いたメールを毎日0時にゴミ箱に移動します。
Gmailにラベルを付けよう
1.まずは、消したいメールの法則性を掴みます。 googleカレンダーからの通知メールを消したいので、送信元のメアドで判断しましょう。
2. gmailの「設定」を開きます。
3. 「フィルタとブロック中のアドレス」を選択します。
4.フィルタ条件を作成します。
5. 「ラベルを付ける」から、新しいラベルを作ります。
6.ラベルが作成されました。今後受信したメールには、このラベルが自動的に付くようになります。
7. ただし、今まで受信したメールにはラベルが付いていません。ラベルを付けてあげましょう。 受信トレイの検索窓に、フィルタ条件と同じものを打ち込みます。そして、「この検索条件に一致するすべてのスレッドを選択する」をクリックします。
8. 条件に一致したメールにラベルを付けてあげましょう。
スクリプト作成と、タイマートリガー設定
1. Google Apps Scriptを作成します。 今回はgoogleスプレッドシート上に乗っけます。 (こうすることで、削除したメールの一覧などをスプレッドシート上に出力することも可能です)
2.Googleスプレッドシートを開いたら、「ツール」→「スクリプトエディタ」を開きます。
3.スクリプトファイル名は〇〇.gsとなります。今回は「コード.gs」とします。
4. コードは以下のとおりです。
function myFunction() { //3日より前のGoogleカレンダー通知メールを削除する deleteMail(GmailApp.search('label:calendargoogle older_than:3d')); } function deleteMail(deleteThreads) { for (var i = 0; i < deleteThreads.length; i++) { deleteThreads[i].moveToTrash(); } }
解説
myFunctionは最初に呼び出される関数です(詳しくは後で)。 GmailApp.search('label:calendargoogle older_than:3d') は、ラベルが「calendargoogle」と付いた、3日前のメールを抽出しています。
deleteMail関数で、それらを受け取って、 moveToTrash()でゴミ箱に移動します。簡単ですね。
参考:https://developers.google.com/apps-script/reference/gmail/gmail-app
5. 虫さんのマークからデバッグも出来ますよ。 初回実行時は、プロジェクト名とか決める必要があるので、入力しましょう。
6. gmailにアクセスする許可が必要です。聞かれたら、画面の指示に従います。
7. 実行中。しばらく待ちましょう。
8. gmailのゴミ箱見てみましょう。 おお!見事にゴミ箱に移動しています! ここに入ったメールは30日経てば、完全に削除されます。
9. 動作がうまくいくことを確認したら、バッチ化しましょう。 時計マークをクリックします。
10. トリガーを追加します。
11. トリガーを追加します。 実行する関数を選択→これはmyfunctionで良いです。 イベントのソースを選択→時間主導型を選択します。
時間ベースのトリガーのタイプを選択→日付ベースを選びます。 時刻は午前0時~1時を選びます。
12. トリガーが作成されました。
13. 翌日に実行されていることを確認しましょう。
あとがき
これでメールの自動削除が出来ました。
ほっておいても、ゴミ箱に勝手に移動してくれます。
なお、GmailApp.searchは、いろいろな条件を指定できます。 gmailの検索窓で入力できる方法をそのまま流用できます。
例えば、gmailはカテゴリというものがあり、自動的にソーシャルとかプロモーションとか分類されますが、
GmailApp.search('category:promotions older_than:15d')
とすると、15日前のプロモーションのメールが対象になります。
Google Apps Scriptを初めて使いましたが、応用次第では色々できそうです。