Emotion Wave Tech Blog

福岡にあるエモーションウェーブ株式会社のエンジニアが書いています。

Gmail自動削除の方法

目次

前書き

どうも、高島です。

gmailって、何もしないとどんどん貯まっていきます。

容量を食うので定期的に削除しようと思います。

googleカレンダーのメールやソーシャルサイトからのメールは、単なる通知メールですので、数日で消してしまっていいです。

これらを自動で消していこうと思います。

  • どうやって?

Google Apps Scriptを使います。 これでgmailのサービスにアクセスして、条件に合ったメールを 定期的にゴミ箱に移動させます。

  • 方法は?Gmail編。

gmailのフィルタ機能を使って、メール受信時に自動でラベルを付けます。

ラベルが付いたメールを毎日0時にゴミ箱に移動します。

Gmailにラベルを付けよう

1.まずは、消したいメールの法則性を掴みます。 googleカレンダーからの通知メールを消したいので、送信元のメアドで判断しましょう。

f:id:devew:20200115163616p:plain

2. gmailの「設定」を開きます。

f:id:devew:20200115161230p:plain

3. 「フィルタとブロック中のアドレス」を選択します。

4.フィルタ条件を作成します。

5. 「ラベルを付ける」から、新しいラベルを作ります。

f:id:devew:20200115163229p:plain

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を初めて使いましたが、応用次第では色々できそうです。