GAS で Slack に通知する


最近流行っている?GAS ( Google Apps Script ) を使ってSlackへの通知設定をしてみました。今回はその方法をまとめていこうと思います。

GAS とは

Google Apps Scriptは、G Suiteと統合されたビジネスアプリケーションを迅速かつ簡単に作成できる、迅速なアプリケーション開発プラットフォームです。JavaScriptでコードを記述し、Gmail、カレンダー、ドライブなどの好きなG Suiteアプリケーション用の組み込みライブラリにアクセスできます。インストールするものは何もありません。ブラウザにコードエディタをインストールし、Googleのサーバーでスクリプトを実行します。

引用元:Google Apps Scriptの概要 | Google Developers

Google Apps Scriptは、Google が提供している JavaScript をベースにしたプログラミング言語のことです。その最大の特徴は、GoogleスプレッドシートやGoogleドキュメントなどの Google Apps と呼ばれるアプリと簡単に連携できるところにあります。

GASを使う開発環境は大きく2種類あります。Container Bound Script と Standalone Script です。簡単に説明すると Container Bound Script は Google スプレッドシート 上で直接開発していくことができます。対して Standalone Script はPCのドライブ上で開発していきます。少し興味あるからGAS触ってみようかなと考えている人には Container Bound Script をおすすめします。2つの細かい違いについてはQiitaらへんでみていただければいいかなと思います。
参考サイト:Google Apps Script 入門 | Qiita

開発環境

まずは開発環境の準備をしていきます。今回は Container Bound Script にしました。Googleスプレッドシートのツール > スクリプトエディタで開くことができます。このスプレッドシート内でソースコードを書いたり実行したりすることができます。



Slackへの通知方法

Slackへの通知は Incoming Webhook で行います。 Incoming Webhook とは、Slackアプリの一つで外部からSlackへメッセージを投稿する機能を持っています。

受信Webフックは、外部ソースからのメッセージをSlackに投稿するための簡単な方法です。それらはJSONペイロードを持つ通常のHTTPリクエストを利用します。JSONペイロードにはメッセージと、後で説明するその他のいくつかのオプションの詳細が含まれます。

引用元:Incoming Webhook | Slack App ディレクトリ

Incoming Webhook の設定

Incoming Webhook の設定は Slack でのIncoming Webhook の利用 | Slack の「Incoming Webhook の設定」にしたがって設定していきます。


Incoming Webhook の設定

① (まだ作成していない場合には) Slack アプリ を作成します。

② 設定ページから Incoming Webhook を有効化します。

③「新しい Web フックをワークスペースに追加する」をクリックします。

④ アプリの投稿先となるチャンネルを選択して「許可する」をクリックします。


※ 『設定ページのリフレッシュ後に「新しい Web フックをワークスペースに追加する」をクリックします。』とありますが、リフレッシュしなくてもいけました。リフレッシュというのは、おそらく Revoke All OAuth Tokens. の下の方にある「Revoke All OAuth Tokens」のことかと思います。


⑤ 着信 Web フック URL を使用して Slack に投稿します。(URL をコピーしておいてください。)


これで Slack へ通知するための準備は整いました。

スクリプトエディタにソースコードをかく

Google スプレッドシートのスクリプトエディタに下記のようなソースコードを記載します。
参考サイト:【初心者向け】GASを使ってSlackへ自動通知 | Qiita , SlackのIncoming Webhooksを使い倒す | Qiita

function postSlack() {

  var jsonData =
  {
     "text" : 'テストメッセージ'
  };
  var payload = JSON.stringify(jsonData);

  var options =
  {
    "method" : "post",
    "contentType" : "application/json",
    "payload" : payload
  };

  UrlFetchApp.fetch('https://hooks.slack.com/services/*****', options);
}

UrlFetchApp.fetch の第一引数には、Webhook URL を入れます。jsonData の text の値には送信したいメッセージを入れます。

ソースコードが書けたら関数を実行してみましょう。実行したい関数を選択し、実行ボタン「▶︎」をクリックします。


関数の実行

関数の実行結果


トリガーの設定


トリガーの設定は、実行ボタン「▶︎」の左横にある時計ボタンから設定できます。


トリガーの設定


たとえば、毎日午前9時〜10時の間に通知したいのであれば、「時間主導型」「日付ベースのタイマー」「午前9時〜10時」で設定します。


トリガー設定



余談

余談ですが、GASを使い始めたきっかけについてお話します。
11月に、Frontend Nagoya #7 でLTをやってみないか?というお誘いがあり、これがGASを触るきっかけとなりました。
GASでやろうとしたことは工数表の入力チェックです。私が勤めているアップルップルでは工数をGoogleスプレッドシートで管理しています。しかし、朝急ぎの仕事が入ってしまったりすると工数表の入力を忘れてしまう時が多々ありました。そこで、工数表をGASで入力チェックし、Slackへ通知できたら便利そうという話があがりそれをやってみることにしました。その時に大変お世話になったサイトがありますので紹介させてください。

いつも隣にITのお仕事 というWebサイトの GoogleAppsScript シリーズです。シリーズ第一弾はこちらです「超初心者へGoogleAppsScriptを始めるメリットをこれでもかと説明します | いつも隣にITのお仕事」。
Googleスプレッドシートから情報を参照するならこのサイトをおすすめします。とてもわかりやすく解説してくださっているのでもしかしたら Javascript を触ったことがない人でもGASが書けるようになるかもしれません。


投稿 2019/01/04