見出し画像

Googleフォーム×GASでChatに回答を自動通知!リアルタイム連携の完全ガイド

学校の業務でも、Googleフォームによるアンケートを行う機会が増えてきています。

アンケートの中には、参加者確認や反省のように、期限までに一度答えてもらえばOKというものもあれば、欠席連絡や割振り管理のように、長期間にわたって複数のユーザーが回答するというパターンもあります。

このように繰り返し回答があるものについては、手動で定期的にGoogleフォームまたはスプレッドシートを確認するという運用よりも、回答があった場合に、通知→確認という運用の方が効率的です。

Googleフォームの機能として、回答があった場合にメールで通知することは可能ですが、Googleフォームのオーナーにしか通知ができないため、組織全体で共有することはできません。

そこで今回は、Googleフォームへの回答があった場合に、関係者が入っているGoogleChatに通知する方法を検討します。

Googleフォームの使い勝手をさらに向上させ、仕事効率をアップしていきましょう!

お知らせ

これまでnoteで紹介してきた校務効率化のアイデアをまとめた書籍が、明治図書出版さんより出版されます。


僕がこれまで紹介してきたテンプレートに加え、今後紹介していくテンプレートも、この書籍から入手できる形にしていく予定です。

ご興味ある方はチェックしてみてください。


(1)実現までの手順

今回の目的である、Googleフォームで回答された内容をGoogleチャットに転送するまでの手順は、以下の通りです。

① Googleフォームとスプレッドシートを作成
② Googleチャットでスペースを作成
③ GoogleチャットでWebhookを設定
④ GASのコードを作成
⑤ トリガーの設定

では、順番に見ていきましょう。

① Googleフォームとスプレッドシートを作成

まずは、今回扱うためのGoogleフォームとスプレッドシートを作成しましょう。

今回は、以前紹介した出欠連絡フォーム・スプレッドシートを使ってみます。

まずは、スプレッドシートに集まってきた情報の中から、Chatに転送したいを整理し、転送する情報の準備をします。

関数を使って、転送したい情報をO列に集約

出欠連絡があった場合に、O列の内容をGoogleチャットに転送することを目指します。

② Googleチャットでスペースを作成

次はGoogleチャットで「スペースを作成」します。

スペースを作成

このChatスペースに、スプレッドシートの内容を転送するので、情報を共有したいアカウントを招待しておきます。
※自分だけで使いたい場合や試す場合は、他のアカウントを招待する必要はありません。

③ GoogleチャットでWebhookを設定

スペースの設定が終わったら、Googleチャットに内容を飛ばす際に必要になる、Webhookの設定を行います。

アプリと統合をクリック

Webhookを追加を押します。

Webhookを追加

④ GASのコードを作成

Googleフォーム・スプレッドシート・Googleチャットそれぞれの準備が終わったら、次はGASのコードが必要です。

ここが最もハードルが高いように感じられますが、現在は生成AIを活用してコードを書かせることもできます。

生成AIを活用したコード生成の方法は、以前記事にまとめていますので、自分でコードが書けないという方は、参考にしてみてください。

僕もコードが書けるわけではないので、生成AIに補助してもらって以下のコードを作成しました。

function onFormSubmit(e) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('データ整理');
  var range = sheet.getRange('O2:O'); // O列全体(O2 以降)を指定
  var values = range.getValues();
  var statusRange = sheet.getRange('P2:P'); // P列全体(P2 以降)を指定
  var statusValues = statusRange.getValues();

  // O列の全行を確認して新しいデータがあるかチェック
  for (var i = 0; i < values.length; i++) {
    if (values[i][0] !== "" && (statusValues[i][0] === "" || statusValues[i][0] === undefined)) {  // 空白ではなく、P列が空の場合
      sendToChat(values[i][0]); // チャットに送信
      // 送信した行のP列にフラグを設定
      sheet.getRange(i + 2, 16).setValue("送信済み"); // P列は16番目の列
    }
  }
}

function sendToChat(value) {
  var url = "https://chat.googleapis.com/v1/spaces/XXXX/messages?key=XXXX&token=XXXX"; // Webhook URL を入れる
  var payload = {
    "text": "出欠情報\n" + value  // 改行を追加
  };
  
  var options = {
    "method": "post",
    "contentType": "application/json",
    "payload": JSON.stringify(payload)
  };
  
  UrlFetchApp.fetch(url, options);
}

動作の内容としては、未送信の内容をチェックして指定のGoogleチャットに転送、転送したものについてはP列に送信済みと追加するという単純なものになっています。

このコードが生成できたら、スプレッドシートでApps Scriptを開いてエディタでコードを貼り付けます。

Apps Scriptをクリック
エディタを選択

コードを貼り付けたら、指定のChatに情報を送信するために、WebhookのURLを正しいものに修正してください。

上に挙げたコードの、

"https://chat.googleapis.com/v1/spaces/XXXX/messages?key=XXXX&token=XXXX"; // Webhook URL を入れる

の部分に、以下の手順で取得したWebhookのURをコピーして、入力します。

WebhookのURLをコード内にコピー

⑤ トリガーの設定

最後に、Googleフォームの回答があった際にGASが発火して、情報を転送するようにトリガーの設定を行います。

Apps Scriptをクリック
トリガーを選択
上の状態にする

以上で設定は完了です。正しく設定できていれば、Googleフォームの回答があった場合に、内容がGoogleチャットに転送されます。

(2)メリットと活用方法

今回のように、Googleフォームに回答があった場合に指定したチャットスペースに内容が転送される設定をしておくことで、定期的に手動で確認する必要がなくなり、見落としを防ぐことができます。

必要な情報を複数の職員で素早く共有することも可能になり、業務効率の改善も期待できます。

Googleフォームを連絡帳代わりに使ったり、児童・生徒からのお悩み相談フォームや児童会・生徒会の意見箱を作っておいて、そこの内容をChatに転送するという使い方もいいかもしれません。

学校のHPに意見箱としてGoogleフォームを設置しておくなどの、活用方法も考えられます。

今回紹介した出欠情報の転送・割振り記録以外にも、Googleフォームを活用して情報を集め、それを複数の職員で共有する場合には活用することができるので、自身の環境に合わせてアレンジしてみてください。

(3)まとめ

今回は、Googleフォームに回答された内容をGoogleチャットに転送する方法を紹介してきましたが、いかがだったでしょうか?

デジタルツールを使いこなして仕事効率をアップさせ、教員の本当に大切な仕事に多くの時間を使えるようになることを願っています。

今回の記事が、みなさんの参考になれば幸いです。

【最近のおすすめ記事】

【その他マガジンの紹介】

今後も学校の業務効率化やICT活用について記事にしていく予定ですので、関心のある方はマガジンのフォローをお願いします。

また、育児休業や学校の先生が生活で考えたこと、旅行の記録についても記事にまとめています。そちらも興味があればぜひご覧ください。

改めて、最後までご覧いただきありがとうございます。
記事が気に入っていただけたらスキお願いします!
感想や質問があれば、コメントいただけると嬉しいです。