Slackへ自動通知を行いたい!
というときに、GAS(Google Apps Script)を使用することで簡単に通知を行なうことができます。
今回の手順でできるようになること
- 特定の時間に○○というメッセージをSlackの特定のチャンネルへ投稿すること
前提
- Slackアカウントは取得済み
- 基本的な操作もOK
- Googleアカウント取得済み
使う技術要素
SlackのIncoming WebHooks
Slackは当然使用するのですが、そのSlack内のサービスのIncoming WebHooksも使用します。
Incoming WebHooksとは
Slackのサービス。このサービスを使用すると、WebURLが発行される。この発行されたURLにPOSTすることで、Slackへ投稿できる。
Google Apps Script
Googleが提供する、スクリプト実行環境。
Javascriptのコードを動かすことができます。
コードの実行のトリガーは時間を指定することができます。
上記2つを使って連携、自動通知をしていきます。
手順
1. SlackのIncoming WebHooksの登録
SlackでIncoming WebHooksを登録します。
(1)まずは、自動通知用のチャンネルを作成します。
Slackにてチャンネルを作成します。
今回は#tsuuti
というチャンネルにします。
(2)Incoming WebHooksの設定をします。
Incoming WebHooksの設定をしていきます。
チームのプルダウンを押すと、「Team settings」というメニューがあるので、そこを押します。
設定ページが開き、左側のペインに「Configure Apps」というメニューがあるので、さらにそれを押します。
新しいページが開き、上部に検索ボックスが表示されるので、そこで「Incoming WebHooks」という検索をすると、Incoming WebHooksの設定ページへと飛ぶことができます。
「Add Configuration」を選択し、投稿したいチャンネル( (1)で作成したチャンネル )を選択し、作成ボタンを押します。
作成完了後、Webhook URL
の項目に出てくるURLを後で使用します。
(このURLにしてされたデータをPOSTすることでSlackへ投稿ができます。)
Slack側の設定はこれで完了です。
2. Google Apps Scriptの作成
Google Apps Scriptを作成します。
(1)Google DriveからGoogle Apps Scriptを選択します。
(2)コードを書きます。
var postUrl = 'Incoming WebHooksで発行されたURL';
var username = 'botbot'; // 通知時に表示されるユーザー名
var icon = ':hatching_chick:'; // 通知時に表示されるアイコン
var message = 'test'; // 投稿メッセージ
function myFunction() {
var jsonData =
{
"username" : username,
"icon_emoji": icon,
"text" : message
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(postUrl, options);
}
Incoming WebHooksを参考に、上記のjsonData(payload)
を設定することで、Slackへの投稿ができます。
Incoming WebHooksによると、投稿メッセージとともに、ユーザー名やiconも指定することができます。また、上記では試していませんが、チャンネル
も指定できます。
作成したpayloadを、GASで定義されているUrlFetchApp
でPOSTすることができます。
UrlFetchAppを使用することで、GASでHTTP通信を行なうことができます。
このコードが実行されると、ひよこアイコンのbotbot
というユーザー名のユーザーがtest
と発言します。
(3)実行してみます。
画面上部の実行ボタン
を押すことで、コードを実行できます。
初回実行時は実行の許可を求められるので、許可します。
(4)トリガーを設定します。
画面上部の現在のプロジェクトのトリガー
というボタンを押し、「今すぐ追加するにはここをクリックしてください。」のリンクをクリックします。
この設定で、毎日午後4時~5時の間にこのスクリプトが実行され、Slackに投稿されます。
まとめ
以上で、簡易的にではありますが、Slackへ自動通知ができるようになります。
Google Apps Scriptのトリガー時間の設定は範囲が選べるようになっていて、「毎日○時○分」という指定ができないのですが、スクリプトを使用するとこのような設定もできるようになります。
これは別記事にしようと思います。