Googleフォームにはフォーム投稿内容を自動でスプレッドシートへ出力する機能があるのですが、毎回スプレッドシートを確認するのも手間ですので、Google Apps Script(GAS)を使って投稿内容をHangouts Chatへ送信する仕組みを作ってみました。
実現したいこととやること
実現したいこと
- Googleフォームの投稿内容をHangouts Chatへ自動送信したい
やること
- Googleフォームの作成
- Hangouts Chatでbot作成とWebhook URLの取得
- GASソース準備
- トリガーの設定
Googleフォームの作成
Googleフォームの書式自体は特に指定はありません。
好きな形式で作成すればよいかと思われます。
Hangouts Chatでbot作成とWebhook URLの取得
ここで解説するよりも、以下のリンク先を読んだほうがわかりやすいです。
GASからhangout chatにPostする - Qiita
GASソースの準備(サンプルソース)
作成したGoogleフォームの編集画面からスクリプトエディタを開き、以下サンプルを入力します。今回はソース内でフォームIDとスクリプトを紐づけていないため、フォーム編集画面から直接スクリプトエディタを起動する必要があります。
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);
}
トリガーの設定
トリガー設定画面から、以下の条件でトリガーを追加します。
- 実行する関数を選択 - SubmitForm
- イベントのソースを選択 - フォームから
- イベントの種類を選択 - フォーム送信時
これにより、Googleフォームを送信したタイミングでSubmitFormが起動し、投稿内容が指定のHangouts Chatのチャットルームへ投稿されます。
何がおいしいの?
Googleフォームは外出先からスマートフォンでちょっとした報告をするのにとても便利・有用なツールです。今回はその投稿内容をHangouts Chatへ送信しましたが、ほとんど同じ仕組みでスプレッドシート(簡易DB)やスライド(報告書)の作成・更新、その他APIを叩くようなサービス(Slackなど)も利用できるので、積極的に使っていきたいですね。
参考にしたもの
[超簡単]Hangouts Chat の incoming webhooks を使ってAPIから簡単にメッセージを投稿する
GASからhangout chatにPostする