Googleフォームで連絡や問い合わせ窓口フォームなどを用意して,投稿された連絡・問い合わせ内容をGoogleチャットのスペース(グループ)で受信してグループで共有できる方法です。
事例として,児童生徒学生からの連絡や質問を複数の教職員で共有しながら対応したい場合に使える仕組みです。
使用例
Webブラウザ上の連絡フォーム
Googleチャット上での受信例
iPhone上での通知例
設置手順
(Googleチャット側)
- Googleチャットでスペースを作成
- 作成したスペース内のメニューから「Webhookを管理」を選択
- スペースの着信Webhook URLを作成
- いつでも戻ってきて着信Webhook URLをコピペできるようにしておく
(Googleフォーム側)
- Googleフォームで連絡フォーム作成
- 作成した連絡フォーム内のメニューから「スクリプト エディタ」を起動
- エディタでfunction myFunctionに引数とコードを追加
- チャット側の着信Webhook URLをコピーして,コード内に貼り付ける
- トリガーで「トリガーを追加」する
- 必要な設定をして[保存]する
- フォームとチャットを連携させるためにログインと許可をする
- 連携準備完了
フォーム側に設定するスクリプト
エディタのコードをすべて消去し,以下のコードで置き換える。
もしくは myFunction() に myFunction(e) と引数を追加してから中身を貼り付ける。
function myFunction(e) {
// myFunctionの引数eを追加↑
// Googleフォームの投稿内容をitemResponsesへ入れる
var itemResponses = e.response.getItemResponses();
// Googleフォームの質問項目名と回答を順番に変数textへ入れる
var text = "連絡フォームから";
for(var i=0; i<itemResponses.length; i++){
var itemResponse = itemResponses[i];
var question = itemResponse.getItem().getTitle();
var answer = itemResponse.getResponse();
text += "\n" + question + answer;
}
// Googleチャットのスペースで取得した着信WebhookのURLを設定。コピペすればOK
var post_url = "https://chat.googleapis.com/...";
// スペースに投稿する本文(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
}
// スペースの着信Webhook URLへ投稿
var result = UrlFetchApp.fetch(post_url, options);
}
具体的手順
Googleチャット側
-
Googleチャットでスペースを作成
※スペース名が通知の表示に関係するので吟味すること。
Googleフォーム側
-
Googleフォームで連絡フォーム作成
画面例は単純な記述式だけだが、選択式など選べるのは通常通り。
※質問文が通知や連絡本文の表示に関係するので吟味すること。
-
エディタでfunction myFunctionに引数とコードを追加
※コード内の「連絡フォームから」が通知の表示に関係するので吟味して変更を。
-
必要な設定をして[保存]する
連絡フォームとチャット画面で確認を。
その他・注意事項
- チャットに届いた連絡メッセージに返信しても相手には届かないので誤解しないように。
- 連絡ごとに返信欄でスタッフ内での対応協議などのやり取りが可能というメリット - 「【学籍番号】」になっているところを「【メールスドレス】」とか「【電話番号】」にして、逆連絡の手段を確保するのも一案。
- 相手が入力間違いする場合もあることを承知しておくこと
- メールアドレス収集機能を使うと記録はされるがメッセージには含まれないので注意。含めたい場合は「var mailaddr = e.response.getRespondentEmail();」や「text += "\n【メール】" + mailaddr;」をスクリプトに追加する。 - 「スペースの名称」「着信Webhookの名称」「連絡フォームの質問項目」「スクリプトのコード内の文字列」を編集することでメッセージや通知の字面を編集することになる。
- スペース作成時のタイプは「スレッド返信」でも「ストリーム」でも可能。(2023年3月13日以降はすべてインラインスレッド形式に仕様変更された模様。)
- 連絡の履歴は、フォーム側の機能で回答をスプレッドシートとリンク(連動)させることにより管理できる。スプレッドシートの記録は累積で残るので、フォーム側の回答は適宜削除してリセット可能。
- 年度更新などで連絡履歴を分けたい場合は、スプレッドシートとのリンクを解除し、新たなリンクで新規スプレッドシートに記録するようにすれば、フォーム自体は同じものを継続利用できる。
参考
以下の投稿を参考にさせていただきました。感謝。