gas
Slack

【初心者向け】GASを使ってSlackへ自動通知

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」というメニューがあるので、そこを押します。
menu.png

設定ページが開き、左側のペインに「Configure Apps」というメニューがあるので、さらにそれを押します。
menu_2.png

新しいページが開き、上部に検索ボックスが表示されるので、そこで「Incoming WebHooks」という検索をすると、Incoming WebHooksの設定ページへと飛ぶことができます。
search.png

「Add Configuration」を選択し、投稿したいチャンネル( (1)で作成したチャンネル )を選択し、作成ボタンを押します。
add.PNG

作成完了後、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)実行してみます。
画面上部の実行ボタンを押すことで、コードを実行できます。
初回実行時は実行の許可を求められるので、許可します。
run.PNG

投稿されました!!
message.PNG

(4)トリガーを設定します。
画面上部の現在のプロジェクトのトリガーというボタンを押し、「今すぐ追加するにはここをクリックしてください。」のリンクをクリックします。
triger.PNG

time.PNG

この設定で、毎日午後4時~5時の間にこのスクリプトが実行され、Slackに投稿されます。

まとめ

以上で、簡易的にではありますが、Slackへ自動通知ができるようになります。
Google Apps Scriptのトリガー時間の設定は範囲が選べるようになっていて、「毎日○時○分」という指定ができないのですが、スクリプトを使用するとこのような設定もできるようになります。
これは別記事にしようと思います。