Google Formの投稿をSlack通知する

こんにちは。GMOアドマーケティングのA.Yです。

目的

GoogleFormの提出があった時に、Slack通知が来るようにします。

背景

弊社では事業部からエンジニアへの問い合わせにSlackを利用し、気軽に質問を受け付けられるようにしています。

しかし、そのままではこのような課題がありました。

・担当者ごとに質問の仕方が異なり、エンジニアとの間で何回もやりとりが発生
(障害がおきても発生時刻がなかったり、いつまでに回答が必要か期日がなかったり)
・問い合わせの内容が流れてしまい、同じような質問がなんどもされてしまう

そこで、
・問い合わせフォームのフォーマット通りに記入してもらい、その内容がSlackに通知される
・フォームの内容は、GoogleFormの機能でGoogle Spread Sheetに蓄積される
ように自動化しました。

手順

ほぼ、こちらの手順を参考にスクリプトを作成します。
https://qiita.com/pchan52/items/574e930a3cc42cf7f8b9#%E7%9B%AE%E7%9A%84

ただし、今回は以下の特殊な要望があったので、それぞれ下記のように対応しました。

・ログインした社内ユーザのメールアドレスは取れるので、そこから氏名を取得して欲しい
→ メールアドレスと氏名のマッピングシートを用意して、ループを回して取得します

・投稿日時を整形して欲しい
→ 変換したいカラムまでループを回し、変換対象カラムのデータをみやすい日付に変換します

・デバッグしやすいように、エラーが発生した行をログ出力したい
→ 例外をキャッチしてログ出力します。社内ツールといえども、運用のことも考えてエラー処理はきっちりとログに出しましょう。

実装

以下にソースコードを示します。それぞれ参考としたリンクが書いてあるので、参考にしてください。

最後に

この取組によって、見落としがちな問い合わせをSlackで確認できるようになり、さらにエンジニアがSlackのスレッドに返信する形で対応できるようになり、
Slackの会話が錯綜してしまうことがなくなりました。こういった改善は地味ですが、積み重ねていくことでスケールする組織を築いていこうとおもいます。

地味にハマったこと

@でメンションを飛ばす場合は、 "link_names": 1という設定をしないと、ただの文字列として投稿されてしまい、メンションになりません。