🔔

Googleフォームの回答をSlackに自動通知する: GASとSlack Appを使った簡単設定ガイド

2023/12/16に公開

Googleフォームで受け付けた内容を社内Slackに通知したいときがあると思います。
実装アプローチは連携ツールを使うなどいくつか考えられますが、ここではGoogle Apps Script(GAS)とSlack Appを使って実装する方法を紹介します。
個人的にこの実装方法がシンプルで且つ柔軟性が高いのでオススメです。

実装にあたり必要なプロセスは以下の通りです。

  1. Googleフォームの作成
  2. Slack Appの作成
  3. Google Apps Scriptの作成
  4. Google Apps Scriptのトリガー設定
  5. 動作確認

Googleフォームの作成

まずはフォームを作成します。フォームの項目などは自由に設定してください。
ここでは以下のようなフォームを作成しました。

  • 担当者名: 短文テキスト
  • メールアドレス: 短文テキスト
  • お問い合わせ内容: 長文テキスト

Googleフォーム

https://www.google.com/intl/ja_jp/forms/about/

Slack Appの作成

以下リンクをクリックし、Create New App を選択します。
https://api.slack.com/apps

From scratch を選択し、アプリ名とワークスペースを登録します。

Slack App設定

アプリの表示設定を行います。お好きな内容で設定してください。

Slack App表示設定

管理画面の左サイドバーからIncoming Webhooksを選択し、ONにして有効化します。
Add New Webhook to Workspace をクリックし、通知を受け取るチャンネルを選択します。

Slack App Webhook設定

有効化したチャンネルの Webhook URL をコピーし、保存しておいてください。

Google Apps Scriptの作成

Googleフォームで回答を受け取った際にSlackへ転送するスクリプトを作成します。
先ほど作成したフォームからスクリプトエディターを開きます。

Googleフォーム スクリプトエディタ

以下のコードをエディターにコピペし、SLACK_WEBHOOK_URL の部分を先ほどコピーした Webhook URL に置き換えます。ファイル名は sendSlack.gs として保存します。

sendSlack.gs
function sendSlackMessage(body) {
  const SLACK_WEBHOOK_URL = "ここを書き換え";
  if (body.length === 0) {
    return;
  }

  const options = {
    headers: {
      "Content-Type": "application/json",
    },
    method: "post",
    payload: JSON.stringify({
      text: body,
    }),
  };

  try {
    UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
  } catch (error) {
    Logger.log("Error sending Slack message: " + error.toString());
  }
};

function createMessageBody(itemResponses) {
  let body = "以下のお問合せがありましたのでご確認ください。";
  
  itemResponses.forEach(response => {
    const question = response.getItem().getTitle();
    const answer = response.getResponse();
    body += "\n\n【" + question + "】\n\n" + answer;
  });

  return body;
}

function main(e) {
  const itemResponses = e.response.getItemResponses();
  const body = createMessageBody(itemResponses);
  sendSlackMessage(body);
}

GAS エディタ

Google Apps Scriptのトリガー設定

Googleフォームの回答を受け取った際に先ほど作成した処理が実行されるようにトリガーを設定します。
左ナビのトリガーを選択し、トリガーを追加 をクリックします。以下のように設定し、保存します。

GAS トリガーを追加

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

動作確認

これで準備は完了です。Googleフォームから回答を送信すると、Slackチャンネルに通知が届くはずです。

Slack 動作確認

まとめ

Google Apps ScriptとSlack Appを使用することで、外部の連携ツールを使わずに直接統合できます。これにより、導入の手間が減り、通知内容や処理方法のカスタマイズが容易になります。

ChatGPTを使って処理内容をカスタマイズするのもオススメです。今回の内容がみなさんのライフハックに繋がれば幸いです。

補足

メール送信したい場合は以下の記事を参考にしてみてください。

https://medium.com/@yonemoto/googleフォームで指定したメールアドレスへ通知を送る方法-a99236cdfed

TAM

Discussion