GoogleフォームとSlackを連携してみる
個人開発アプリのサイコンやSFClockでは、お問い合わせフォームとしてGoogleフォームを利用しているが、回答が送信されたことをタイムリーにキャッチするために、フォーム送信時にSlackに回答内容を通知するように連携してみた。
SlackでWebHookを用意する
SlackのAppsからIncoming WebHooksを検索して追加する。ブラウザ遷移したページで「Add to Slack」を選択して、投稿先チャンネルや説明、アイコンを設定する。ここで忘れずにWebhook URLをコピーしておく。
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を連携できたので、試しにフォーム回答して指定したチャンネルに通知が届くかを確認しましょう。
追記
Discordでもチャンネル設定からWebHooksを追加して、上記のスクリプトでURLを書き換えれば、同様に通知を行うことができる。
参考
この記事が気に入ったらサポートをしてみませんか?