1.やりたいこと
- GoogleFormでユーザーが回答を終えたときに、Slackに回答があったことを伝える通知を送る
- 利用シーンとしては、Google Formを「問い合わせフォーム」として利用し、問い合わせに気づくために通知がほしいときに使えます。Google Formでの回答をそのままにしない/すぐに対応するようなシーンで威力を発揮します。
2.実現方法
まず、Google Formでフォームを作成します。その後、slackからwebhookのURLを取得し、GASを使用してGoogle Formの回答から必要な回答を取得し、Slackに通知を送るコードを書きます。最後に、GASのトリガー機能で設定を行いまいます。
2.1 Google Formを作成する
GoogleFormを作成します。お問い合わせフォームの例なので、以下のように簡易的に作成しました。
- 「重要度を教えてください」
- ラジオボタン 「緊急」「通常」「お手すき」
- 「お問い合わせタイトル」
- 記述式(短文)
- 「お問い合わせ内容」
- 段落
また、設定から「メールアドレスを収集する」を「確認済み」にしておきます。(メールアドレスを回答者名をして扱うために、必要です)
2.2 SlackからwebhookのURLを取得
以下の記事の「2.2 Webhook URLの取得」を参照してください。
2.3 GASでコードを記述
お問い合わせフォーム画面の右上の点々アイコンから、「Apps Script」を選択します。
*
以下のコードをコピー&ペーストし、所定の位置にwebhook URLを入力し、保存します。
function sendSlackNotification(e) {
// SlackのIncoming Webhook URL
const slackWebhookUrl = 'sampleUrl';// ここに取得したwebhook URLを置き換える
// Googleフォームの回答から必要な情報を抽出
const formResponse = e.response;
const importance = formResponse.getItemResponses()[0].getResponse();
const title = formResponse.getItemResponses()[1].getResponse();
const content = formResponse.getItemResponses()[2].getResponse();
const name = formResponse.getRespondentEmail(); // 回答者のメールアドレスを名前として利用
// Slackに送信するメッセージを作成
const message = `ただ今、お問合せがありましたのでご確認ください。\n\n【${importance}】「${title}」\n質問者:${name}\n質問内容:${content}`;
// Slackに通知を送信
const options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify({
'text': message
})
};
try {
UrlFetchApp.fetch(slackWebhookUrl, options);
Logger.log('Slack通知を送信しました。');
} catch(error) {
Logger.log('Slack通知の送信に失敗しました。', error);
}
}
ちなみに、このコードでは、Google Formの回答を取得し、回答内容をslackに送っています。回答者のメールアドレスを名前として利用しています。
2.4 設定を追加する
設定を追加していきましょう。
- 実行する関数: sendSlackNotification
- 実行するデプロイ: Head
- イベントのソース: フォームから
- イベントの種類: フォーム送信時
最後に「保存」ボタンを押下します。
3.動作確認
作成したGoogle Formを回答して、slackに通知が飛ぶか動作確認をしてみましょう。
4.作ってみた感想
GASを使うと簡単に自動化ができて、試行錯誤するのが楽しいです。今回はメールアドレスを名前として利用していますが、ここはもう少し改良の余地があります。フォームの項目に名前や所属を追加してもよいかもしれません。いずれにせよ、自分が必要な文脈でカスタマイズできて、使い勝手がよいです。
最後まで読んでいただいた方、ありがとうございました。
参考文献
Yuiki's BNB blog「【コピペでOK!】GASでGoogleフォーム回答者のメールアドレスを取得する方法」https://www.yukibnb.com/entry/form_getrespondentemail
2025年02月08日アクセス.