さまざまなメールを通知としてSlackに飛ばす(2)

前回の内容について、具体的に説明します。

まず、スクリプトを作成します。GSuite Developer Hubを開き、新しくプロジェクトを作成します。
https://script.google.com/home

左にある「新規スクリプト」をクリックすると空のスクリプトファイル「コード.gs」が1つある「無題のプロジェクト」が開きますので、とりあえずは下記のプログラムをコピーし、貼り付けてください。
(なお、このプログラムは、JavaScriptをまともに書いたことがない人間が作成したものですので、変なところがあるはずです。改善案や問題点があれば、ぜひコメントをお寄せください!)

 

なお、上記のスクリプトは、以下のページのスクリプトをベースに作成しました。この場をお借りしてお礼申し上げます。
https://github.com/comefigo/gmail-to-slack/blob/master/Main.gs

このスクリプトの先頭行の内容は、Slackのアプリの「Incoming Webhook」で取得しなければなりません。Slackの設定画面を開き、アプリの「Incoming Webhook」をインストールしてください。設定画面の「インテグレーションの設定」にある「Webhook URL」から取得できますので、そのまま貼り付けてください。
(このURLを、自分自身以外が知ることがないようにしてください。)

入力後に、保存して下さい。今回は、プロジェクト名を「GmailToSlack」としてあります。

 

 

次に、Slackに飛ばすメールの情報を定義した、JSONファイルを作成します。メモ帳などのテキストエディタを起動し、下記の内容を貼り付けてください。(中身については別途説明します。)

 

このファイル名を「MailData.json」として保存後、Google Driveを開き、このファイルを配置してください。配置する場所はどこでもかまいません。以下のURLからGoogle Driveに入り、Webブラウザにファイルをドラッグ&ドロップして配置できます。
https://drive.google.com/drive/my-drive

 

これで最低限の準備が完了しました。動作確認のためのメールが必要となるので、Gmailで自分自身宛のメールを作成し、タイトルを「テストサンプル」とし、適当に本文を記入して送信してください。すぐに自分自身が受信しますが、開封(既読)にしないでください。

 

再度、Google Apps Scriptに戻り、上部のメニューから「実行」→「関数を実行」→「gmailToSlack」を実行してください。スクリプトからGmailアカウントおよびGoogle Driveのファイルを参照するために、権限を付与することが必要です。「アカウントの選択」画面が表示されるので利用しているGmailのアカウント選択します。「このアプリは確認されていません」の画面が表示されるはずですが今回は自分が作ったものなので、画面下の「詳細」をクリックし、「GmailToSlack(安全ではないページ)に移動」を選択してください。

すべてがうまくいっていれば、Slackに投稿され、メール自体は既読・アーカイブになるはずです。

 

なお、下記のページにあるように、メールの取得数制限(1日2万通以内)やスクリプトの動作時間制限(1日90分以内)があります。
https://developers.google.com/apps-script/guides/services/quotas

2万通というとそんなにメールは来ない、と思うかもしれませんが、これはあくまでも1日の処理数です。例えば、1分に1回スクリプトを動作するように設定し、処理対象外のメールが受信トレイに50通残っているとすると、1分ごとに50通のメールを取得して判定し、1日では50通x60分x24時間=72000通、ということで制限を超えてしまいます。

この制限に引っかからないようにすることと、処理時間を短くするために、Gmail側のフィルタで直近1時間以内のメールのみを取得するようにしました。

明日は、定義ファイルの具体的な内容と、トリガーとして定期的に実行する方法を投稿します。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です