【GAS】Googleフォームの投稿をHangouts Chatへ送信する方法

GAS
GAS
この記事は約6分で読めます。
スポンサーリンク

最近業務フローを整備する中で、投稿が来たタイミングでどうやって通知を受け取ればより効率的かを考えていました。

その中で、Googleフォームの投稿内容をそのままchatで通知してくれたらめっちゃ便利じゃない?と思っていろいろ調べて試してみた結果、なかなか良さそうな方法が見つかったのでまとめてみます。

なお、思いついてから実際に検証するまで30分くらいで済んだめっちゃ手軽な方法なのでぜひ試してみてください。

Googleフォーム × Hangouts Chatのメリット

まずは簡単にGoogleフォーム × Hangouts Chatのメリットをまとめます。

問い合わせする側のメリット

問い合わせ時の入力項目をある程度項目化できるので問い合わせ工数がかからない

これに尽きると思います。
業務フローを効率化・整備する場合、関わる人たちの手間を増やしてしまっていては意味がありません。ただでさえ、今までのやり方を変えるのでハレーションはどうしても起きてしまいます。その分、関係者がそれを活用するメリットがあると思ってくれることがとても大事

その点、チャット等で問い合わせるのと同じくらい気軽に、かつそこまでテキストを整形せずにざっくりと投げられるという点では問い合わせする側としても楽になるのが最大のメリットですね。

あとは場合によっては、いろんな部署の人が入っているチャットで連絡をしなければいけない状態だったりすると、他部署の人たちに問い合わせした内容が見えないという点もメリットになりえます。
(おおっぴらには聞けないけど聞きたいことなどもあると思うので・・・笑)

ただし、問い合わせしてることやその内容、回答が他者に共有されないというブラックボックス化をしてしまっては意味がないので、その点は注意する必要があります。

問い合わせを受ける側のメリット

  • 問い合わせが来たタイミングでchatに連絡が来るので見逃しがなくなる
  • 問い合わせ内容をスプレッドシートでリスト化できるのでタスク管理がしやすい
  • Google基盤なので連係しやすい(仕組み化しやすい)

問い合わせを受ける側にとって大事なのは見逃しがないこと。見逃しが起きてしまうようであれば、これまでのフローに逆戻りすることも考えられるので単にフォームにするだけでは不十分です。

また、フォーム×chatだと、問い合わせ内容をスプレッドシートに連動させて、どの問い合わせを誰が対応するのか、対応は完了しているのかをチーム内でシェアすることができるのでタスク管理的にも効果的だと思います。

そして最後に、その仕組みを作るのに手間がかからないこと。こういった整備をする際に、手間が大きいと効率化・フロー整備をするコスパが良くないので、そういう意味でもGoogle基盤のツールはとても効果的です。

Googleフォーム × Hangouts Chatで業務フローを効率化する

それでは実際Googleフォーム × Hangouts Chatで業務フローを効率化する方法をみていきましょう。

Googleフォームでフォームを作る

まずはGoogleフォームでフォームを作ります。ログインしたGoogleアカウントでこちらに入ります。

Google Forms: Sign-in
Access Google Forms with a personal Google account or Google Workspace account (for business use).

続いて、問い合わせ内容を簡易的に入力できるようなフォームを作成します。

スクリプトエディタを開く

フォームができたら、フォーム管理画面の「スクリプトエディタ」をクリックしてスクリプトエディタを開きます。

GASソースを貼り付ける

スクリプトエディタを開くと以下のような画面になります。

今回は以下の記事を参考に、コードを貼り付けます。
上記赤枠部分にあるコードをまずは全て削除し、そこに以下のコードを貼り付けます。

function SubmitForm(e){
 //Googleフォームの投稿内容をitemResponsesへ入れる
 var itemResponses = e.response.getItemResponses();

 //Googleフォームの質問項目名と回答を順番に変数textへ入れる
 var text = "Googleフォームの投稿内容です";
 
 for(var i=0; i<itemResponses.length; i++){
  var itemResponse = itemResponses[i];
  var question = itemResponse.getItem().getTitle();
  var answer = itemResponse.getResponse();
  text += "\n" + question + "\n" + answer;
 }

 //Hangouts ChatのチャットルームWebhook URL。前項で取得したURLをコピペすればOKです
 var post_url = "https://chat.googleapis.com/v1/spaces/xxxxxxxxxxxxxxxxxxxx";

 //チャットルームに投稿する本文(JSON形式) → 変数textの中身を入れているだけ
 var payload = {
  "text": text
 }

 //投稿する際のおまじない(JSON形式)
 var options = {
 "method":"POST",
 "headers":{"Content-Type":"application/json; charset=UTF-8"},
 "payload": JSON.stringify(payload),
 "muteHttpExceptions":true
 }

 //指定したチャットルームのURLへ投稿する
 var result = UrlFetchApp.fetch(post_url, options);
}

(参考:https://qiita.com/fuku_sato1/items/3acb2686a9d989dd8563)

Hangouts ChatのWebhookを取得して貼り付け

ChatよりWebhookを取得して以下の赤い下線箇所にURLを入れ込みます。なお、Hangouts ChatのWebhook取得方法は以下を参照ください。

[超簡単]Hangouts Chat の incoming webhooks を使ってAPIから簡単にメッセージを投稿する - Qiita
概要タイトル通りです。Hangouts Chat は ルーム毎に超簡単にwebhook用のURLを払い出すことが出来ます。投稿もとても簡単です。なお、Hangouts Chatは、G sui…

貼り付けたソースを保存する

貼り付けたらメニュー欄にあるファイルアイコンを押して保存します。

最初に保存する際には、プロジェクト名を入れないと保存できないのでこちらに任意の文字列を入れて「OK」を押します。

トリガーを設定する

最後にトリガーを設定するために時計マークをクリックします。

続いて右下の「トリガーを追加」をクリックします。

フォームのスクリプトからトリガーを設定する場合には、「イベントのソースを選択」に「フォームから」が出てきます。こちらと「イベントの種類を選択」で「フォーム送信時」を選択したら完了です。

まとめ

今回はGoogleフォーム × Hangouts Chatで業務フローを効率化する方法をご紹介しました。

業務効率化・改善は現在のフローや作業内容、ステークホルダーとの関係性に大きく依存するので、その場にあった方法を模索しなければいけませんが、そのうちの1つの手段として今回ご紹介した方法が役に立てば嬉しいです。