2019年1月9日水曜日

【応用B】 Google Apps Script を使って、Gmail の未読迷惑メール一覧をメールで受信する


目的は、未読の迷惑メールについて定期的に読んでないものをチェックしたいというよなぁ、それって Google App Script で出来るんじゃない?でも検索しても出てこないぞっということでまとめてみることにしました。

実際の運用については、トリガーで定期的に実行することかなと思います。そのことも含めて全体的な流れは

のほうを参考にしてみてください。
以下は、上記リンクのSTEP2, STEP3のみ説明します。

Step 2. 作業フォルダを作成し、Google Apps Script を新規作成する


新規 > その他 > Google Apps Script を開きます。

コードサンプルは次の通りです。
をコピーして、開いた Google Apps Script エディタの中身を消して、ペーストしてください。そして一旦保存してください。名前はなんでもよいです。
ここでは、「checkUnreadSPAM」としています。

次に、
  • var SEND_TO = "[your e-mail address]";
について、送信先メールアドレスを入れてください。
  • var SEND_TO = "◯◯@gmail.com";
などです。
そして上書き保存してください。


STEP3. 手動実行による動作検証



上図の「再生」マークをクリックしてください。
最初の1度目は、Google Apps Script が Gmail等にアクセスする許可を聞いてきます。詳細 > 「○○プロジェクト(安全ではないページ)に移動 > 「許可」してください。




迷惑メールが多ければ多いほど時間がかかります。
また Google Apps Script は 6分を超える処理はできないので、大量の迷惑メールがあると処理ができないかもしれません。

うまくいけば、SEND_TOで指定したメールアドレス宛に


の件名で、下記のように
  • 年-月-日 時:分:秒  件名 (差出人)
というフォーマットで一覧表がメール本文に付与されます。
日時は JST(日本時間)です。


 このあたりのフォーマットを変更したいなら、

  • mailBody += '<li>'+spamMessage_dates+' '+spamMessage_subject+' - ('+spamMessage_from+')</li>';

あたりのコードなどをいじればよいです。JavaScriptの知識があればより複雑なことができるでしょう。

Appendix: 一度リスト化したメールは自動的に既読にしたい


毎回同じ一覧がでるのではなくて、一覧に出たもの以外をリストでメール受信するほうがいいという場合もあると思います。そうしたケースでは、

の方を使えば、一度処理したメールは既読にできるので、意図した通りの動きになります。ただ未読の迷惑メールがない場合も 0 件とメールします。
そのときに送信してほしくない場合には追加のコードが必要ですが、まぁいまのところそんな需要はない(面倒)なので気が向いたら作るかも知れません。

2019年1月9日 @kimipooh
2019年1月10日 修正

Google+ Badge