Google Forms の回答を Slack に通知する最強のスクリプト
はじめまして。furukaw と申します。 株式会社HERP でエンジニアインターンをしています。
HERP は 採用管理ソフト および 採用コンサルティング の会社なのですが、今回はその主要なシステムの部分ではなく、タイトル通り Google Forms と Slack の話です。
HERPでは採用コンサルティングの「お問い合わせフォーム」に Google Forms を利用させていただいているのですが、このたび社内で
「お問い合わせがあったら Slack に通知が来てほしい」
との要望が生まれ、それをできるだけスタイリッシュに実現しました。
※ 2018/4/18 に投稿した記事の再投稿です。情報は当時のものです。
設定手順
こちらの Git リポジトリに、必要なスクリプトと、設定の詳しい手順をまとめました。
これに従って設定をするだけで、回答があったときに Slack の特定のチャンネルにメッセージが届くようになります。
この手法のすばらしさ
このスクリプトには、
- 届くメッセージがきれいで見やすい
- あらゆるフォームに使える(すでにあるフォームに全自動で対応する)
- スクリプトの内容は見なくていい
という複数の圧倒的な利点があります。
とにかく手順を README にまとめていますので、プログラミングなどの知識が無くても有っても、すばやく設定ができるようになっています。
1 メッセージがきれい
上のようにプレーンな Slack メッセージがひたすらチャンネルを埋め尽くすと無機質さが広がり、
「さみしい」「見づらい」 「もっとファンシーなメッセージが来てほしい」
という声があがりました。
そこで、フォームに対して設定できるスクリプトをちょっとだけ書き足して、下のようにしました。
あまり派手になっていないので違いがわかりにくいかもしれませんが、
- 質問内容(項目名)を強調 → どこに何が書いてあるか一目でわかる
- 1列か2列に整頓されたレイアウト
- 左のなんだかかっこいい線
- 「お問い合わせ」感のあるアイコン
によって、少しプロっぽい通知になったのです。
さらに、以下はスクリプト知識無しでカスタマイズ可能です。
2 あらゆるフォームに自動で対応
「Googleフォーム Slack」と検索するだけでとても分かりやすく説明をしてくださっている記事がたくさん見つかり、大いに参考にさせていただいたのですが、
- 例として載っているものと全く同じフォームを使わないかぎり、スクリプトを読み取って書き換える作業が必要
という、素人にはきついものがほとんどで、さらにフォームの質問項目を変更したらスクリプトも書き直す必要があり保守性に欠けるように思われたので、「どんなフォームにも使えるスクリプト」を用意しました。
Google フォームの(2018年4月時点での)全種類の質問を順番につめこんだフォームを通知したものがこちら。
このように全種類の質問について、配布されたままのスクリプトで動作します。
※「ファイルアップロード」質問は、ファイルの内容をSlackメッセージ内に出すことはできないので、ファイルの有無だけが分かるようになっています。
- 質問項目が多い
- 質問項目が少ない
- プルダウン、グリッドのチェックボックスなど、特殊な形式の質問がある
というようなことがあろうとなかろうと、同じ操作で設定を完了できます。
これによって、すべての「Google フォームの回答を Slack で知らせて欲しい人々」が、このまま利用できるようになっています!
3 スクリプトの内容は見なくていい
ここまでしつこく書いたように、上の Git リポジトリにある説明の通りに設定すれば、Google Apps Script という難しいものを理解せずとも、
- ボタンをクリックする
- チャンネル名などをキーボード入力する
- 通知のタイトルを考える
といった最低限の動きを指示通りに行うだけで、綺麗で実用的な通知を設定できます!
「(GoogleフォームのSlack通知が)できたら便利だと思ってググってみたら、ぜんぜんわからなかったのでやめた」
という日本人が何千人と居るのではないかと私は考えているのですが、そんな方々にぜひ使っていただいて、もし問題があれば知らせていただきたい所です。
参考
Googleformからのslack通知設定方法 - Qiita
「Googleフォーム Slack」と検索したときに一番に表示される(2018年4月時点)ページで、ごく分かりやすくまとめられていてとても助かりました。 こちらのページを大変参考にさせていただいています。
まとめ
Google フォームへの回答を Slack に通知するためのすごく便利なスクリプトを書き、設定の手順をまとめました。
今回のように一般的に使えるソースコードを書くことは楽しいし、あらゆる面で役に立つと思います。
そのうち、ユーザが記入する項目をスクリプト先頭にまとめる・メッセージ内容のカスタマイズできる部分を増やすなど改良していきたいと思っています。