こんにちは、SCSK浦野です。
友人とダイエットを始め進捗共有用のスレッドを作成したはずが飲み会相談用のスレッドになってしまいました。
さて、Google Forms を最近使い始めたのですが、フォームに登録があった際の通知を受ける方法について少し調べたので共有させていただきます。
やりたいこと
Google Formsでアンケートを実施、ユーザさんからの登録があった際に通知が欲しいとき、一番簡単な方法はFormsの設定でメール通知をONにする方法かと思います。
しかし、この方法ではFormsのオーナーにしか届けることができず、任意のメールアドレスを指定することができません。そこで、何らかの形で通知を届ける方法がないか考えてみました。
トリガーを利用して、Google Apps Script を起動してメールを送るのが一番初期の希望に近いのかと思ったのですが、Teamsを使って回答内容を含めた情報を複数人で共有ができると良い場面だったため、Webhookを利用してTeamsのチャンネルにポストされるようにしてみたいと思います。
Webhook
Webhookとは何か?
Webhookは特定のイベントが発生した時に、事前に設定されたURLにHTTPリクエストを送ることで通知ができる仕組みです。
Microsoft TeamsのWebhookの設定
Microsoft Teamsでは、「入力コネクタ」を使って独自のWebhookを設定することができます。これにより、特定のチャネルに外部からの情報を直接送信することが可能となります。
Microsoft Teamsで新しいWebhookを作成する方法
- Microsoft Teamsでチャネルを開きます。
- チャネルヘッダーの「…」(その他のオプション)をクリックし、「コネクタ」を選択します。
- 「入力コネクタ」を検索して選択します。
- 「設定」をクリックして新しいWebhookを作成します。
- Webhookに名前を付け、オプションで説明を追加します。
- 「作成」をクリックします。
新しいWebhookが作成されると、Webhook URLが生成されます。このURLは一意であり、これを使ってTeamsのチャネルに情報を送信します。URLは秘密にしておく必要があります。コピーして安全な場所に保存します。
Google Apps Script (GAS)
Google Apps Script (GAS)とは
GASはJavaScriptをベースとしたスクリプト言語で、Google Workspaceの各アプリケーションをカスタマイズしたり、自動化に利用できます。ブラウザベースのIDEでコーディングでき、サーバレス環境でスクリプトを実行できます。
Google FormsとGASの連携
Google FormsのフォームレスポンスとGASを連携させることで、フォームへの新規回答に対して自動的にアクションを実行することができます。GASはフォームへのレスポンスをトリガーとして動作します。
スクリプトとトリガーの設定
- Fomsを起動し新しいアンケートのフォームを作成します
- Foms の右上の「その他」をクリック、「スクリプトエディタ」を選択
- 表示されたApps Script の画面で、[プロジェクト名]、[ファイル名]を適当な名前に変更
- 以下のコードを記述します
- 画面左の時計マーク「トリガー」をクリックし、「トリガーの追加」を選択します
- [実行する関数を選択]で「onFormSubmit」(3で作成した関数名)を選択します
- [イベントの種類を選択]で「フォーム送信時」を選択し、保存します
※保存時に実行時の権限について聞かれた場合適切な権限を付与してください。
function onFormSubmit(e) { //渡された情報を表示用に整形 var itemResponses = e.response.getItemResponses(); var messages = itemResponses.map(function(itemResponse) { var title = itemResponse.getItem().getTitle(); var response = itemResponse.getResponse(); return title + ': ' + response + '\n'; }); //送信先(Webhook作成時に取得したURL) var webhookUrl = 'Webhook作成で生成されたURL'; //送信データの整形 var payload = { title: 'アンケートの登録がありました。', text: messages.join('\n') }; var options = { method: 'post', payload: JSON.stringify(payload) }; //送信 UrlFetchApp.fetch(webhookUrl, options); }
動作確認
フォームのアンケートに回答し、Teamsに連携があることを確認します。
まとめ
本記事では、Formsに登録があった際にTeamsで通知を受け取る方法を解説してきました。トリガーとGASを組み合わせることで本記事で例としたTeamsに限らず様々な通知や連携が可能になります。様々なシーンで利用してみてください。