見出し画像

GoogleフォームとSlackを連携してみる

個人開発アプリのサイコンSFClockでは、お問い合わせフォームとしてGoogleフォームを利用しているが、回答が送信されたことをタイムリーにキャッチするために、フォーム送信時にSlackに回答内容を通知するように連携してみた。

SlackでWebHookを用意する

SlackのAppsからIncoming WebHooksを検索して追加する。ブラウザ遷移したページで「Add to Slack」を選択して、投稿先チャンネルや説明、アイコンを設定する。ここで忘れずにWebhook URLをコピーしておく。

Incoming WebHooks
Integration Settings

GASでフォーム送信時に通知する

WebHook URLを用意できたら、GAS(Google Apps Script)を使ってGoogleフォーム送信時にそれを指定してSlackに通知する。
Googleフォーム編集画面右上のメニューから「スクリプトエディタ」を開いて、下記コードを入力して保存する。

function onFormSubmit(event) {
    // 通知メッセージ(任意)
    var message = "A post was sent to XXX form.\n";

    // 投稿者がログインしているGoogleメールアドレスが許可されていれば表示する
    message += "Sender: " + event.response.getRespondentEmail() + "\n";
  
    var items = event.response.getItemResponses();
    for (var i = 0; i < items.length; i++) {
        // 各項目名と回答内容
        message += items[i].getItem().getTitle() + ": " + items[i].getResponse() + "\n";
    }
  
    UrlFetchApp.fetch(
        // Webhook URL
        "<https://hooks.slack.com/services/XXX/XXX>",
        {
            "method" : "POST",
            "contentType" : "application/json",
            "payload" : JSON.stringify({"text": message})
        }
    );
}

編集メニューの「トリガー」から新しいトリガーを作成し、以下のように設定する。これでフォーム送信時に上記コードが実行されて、指定したチャンネルにWebHookを通して通知が届く。なお、初回実行の場合は、スクリプトの実行を許可するポップアップが表示されるが、アカウントを選択して許可する必要がある。詳細はこちらの記事を参照。

  • 実行する関数:onFormSubmit

  • イベントのソースを選択:フォームから

  • イベントの種類を選択:フォーム送信時

これでGoogleフォームとSlackを連携できたので、試しにフォーム回答して指定したチャンネルに通知が届くかを確認しましょう。

Notification Test

追記

Discordでもチャンネル設定からWebHooksを追加して、上記のスクリプトでURLを書き換えれば、同様に通知を行うことができる。

参考


この記事が気に入ったらサポートをしてみませんか?