2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【GoogleForm×GAS×Slack】GoogleForm回答時にSlackに通知を送る

Posted at

1.やりたいこと

  • GoogleFormでユーザーが回答を終えたときに、Slackに回答があったことを伝える通知を送る
  • 利用シーンとしては、Google Formを「問い合わせフォーム」として利用し、問い合わせに気づくために通知がほしいときに使えます。Google Formでの回答をそのままにしない/すぐに対応するようなシーンで威力を発揮します。

2.実現方法

まず、Google Formでフォームを作成します。その後、slackからwebhookのURLを取得し、GASを使用してGoogle Formの回答から必要な回答を取得し、Slackに通知を送るコードを書きます。最後に、GASのトリガー機能で設定を行いまいます。

2.1 Google Formを作成する

GoogleFormを作成します。お問い合わせフォームの例なので、以下のように簡易的に作成しました。

  • 「重要度を教えてください」
    • ラジオボタン 「緊急」「通常」「お手すき」
  • 「お問い合わせタイトル」
    • 記述式(短文)
  • 「お問い合わせ内容」
    • 段落

image.png
image.png
image.png

また、設定から「メールアドレスを収集する」を「確認済み」にしておきます。(メールアドレスを回答者名をして扱うために、必要です)

image.png

2.2 SlackからwebhookのURLを取得

以下の記事の「2.2 Webhook URLの取得」を参照してください。

2.3 GASでコードを記述

お問い合わせフォーム画面の右上の点々アイコンから、「Apps Script」を選択します。
image.png

以下のコードをコピー&ペーストし、所定の位置にwebhook URLを入力し、保存します。
image.png


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 設定を追加する

以下のトリガーアイコンを押下します。
image.png

設定を追加していきましょう。

image.png

  • 実行する関数: sendSlackNotification
  • 実行するデプロイ: Head
  • イベントのソース: フォームから
  • イベントの種類: フォーム送信時

最後に「保存」ボタンを押下します。

3.動作確認

作成したGoogle Formを回答して、slackに通知が飛ぶか動作確認をしてみましょう。

以下のようにslackに通知が飛びました!
image.png

4.作ってみた感想

GASを使うと簡単に自動化ができて、試行錯誤するのが楽しいです。今回はメールアドレスを名前として利用していますが、ここはもう少し改良の余地があります。フォームの項目に名前や所属を追加してもよいかもしれません。いずれにせよ、自分が必要な文脈でカスタマイズできて、使い勝手がよいです。

最後まで読んでいただいた方、ありがとうございました。

参考文献

Yuiki's BNB blog「【コピペでOK!】GASでGoogleフォーム回答者のメールアドレスを取得する方法」https://www.yukibnb.com/entry/form_getrespondentemail
2025年02月08日アクセス.

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?