こんにちは!
社内イベントや講座の受付でGoogleフォームを使っている方は多いと思います。
手軽で便利な一方で、申込数の把握や定員オーバーのチェックを後回しにしてしまうこと、ありませんか?
私たちのチームでも、イベント申込の管理をGoogleフォームで行っていましたが、「気づいたら定員を超えていた…!」という事態が発生し、何か対策を講じる必要がありました。

申し込み状況は今どうなってるんだろ?
そこで導入したのが、Slackへの自動通知です。
フォーム回答をSlackで即チェックできる仕組み
今回の改善で目指したのは、次のような状態です。
- 申込が送信されるたびに、Slackで通知が届く
- 通知には「今回選ばれたコース」と「累計の申込人数」が含まれる
- 定員に達しそうなタイミングで、すぐにチームが気づける
結果的に、GoogleフォームとSlack、そしてGoogle Apps Script(GAS)を組み合わせることで、非常にシンプルで効果的な仕組みを実現できました。
使ったツールはすべて無料
- Googleフォーム(イベント申込用)
- Googleスプレッドシート(回答記録用)
- Google Apps Script(自動処理ロジック)
- Slack Incoming Webhook(通知先)
フォームに送信があると、自動的にスクリプトが実行され、申込内容を確認し、Slackへ通知を送ります。
今回のプログラムでは申し込み人数を集計する必要があるため、スプレッドシートからの連携を行っています。
もし、フォーム送信1件の内容だけで通知をするのであれば、フォーム連携で大丈夫です。
実際に送られてくるSlack通知
こちらが実際の通知例です。
📥 新しいフォーム送信がありました
📝 今回の選択: 初心者
📊 現在の申込状況:
初心者:12名 経験者:21名

今何人申し込んでいるのか、どのコースが人気なのかが一目で分かるね
導入の効果
- スプレッドシートを開かずに状況把握できるようになった
- チーム内で情報がリアルタイムに共有され、確認漏れがゼロに
- 手作業で数を数える必要がなくなり、対応スピードが向上
特に定員が迫っているとき、Slackの通知がそのまま判断材料になるのは大きなメリットです。
シンプルな自動化
今回の仕組みは、難しいプログラミング不要で実現できます。
GASに数十行のコードを書くだけで、通知・集計・共有がすべて自動化されました。
しかも、フォームやスプレッドシートは普段から使っているツールなので、運用のハードルも非常に低いのが魅力です。
今後の展望
今後はさらに以下のような拡張も検討しています。
小さな改善ですが、ひとつの仕組みがチーム全体の安心感と効率を底上げしてくれました。
まとめ
GoogleフォームとSlackを組み合わせることで、リアルタイム通知による申込管理の自動化が実現できました。
手作業に頼っていた頃に比べ、対応のスピードと正確さは段違いです。
しかも、すべて無料ツールで完結しているのもポイント。
「気づけなかった」を防ぐ仕組み、あなたのチームにも取り入れてみませんか?
Googleフォームの内容をSlackに自動通知する方法【実装手順】
ここからは、実際に私たちが行ったSlack通知の自動化設定についてご紹介します。
必要な知識は最低限。GoogleフォームやSlackをすでに使っている方なら、10分ほどで導入可能です。
① Slack API にアクセス
② 新しいアプリを作成
- 「create New App」をクリック
- モーダルが開いたら、「From scratch(スクラッチから作成)」を選択
③ アプリ名とワークスペースを入力
- App Name:任意(例:FormNotifier)
- Pick a workspace:通知を送りたいSlackワークスペースを選択
- 「Create App」で作成
④ Webhookの有効化
- 左メニューから「Incoming Webhooks」を選択
- トグルを「On」に切り替え、「Add New Webhook」をクリック

- 権限リクエストされるので、チャンネルを選択し、「許可する」をクリック

- 先ほどの画面に戻ったら、ページ下部「Webhook URL」をコピーして保存しておく
⑤ Googleフォームとスプレッドシートを連携
- Googleフォームを作成し、回答先にスプレッドシートを指定
- 「希望するコースを選んでください」のような項目を追加(ラジオボタン推奨)
⑥ Apps Script を設定
- スプレッドシートを開き、「拡張機能」→「Apps Script」をクリック
- 以下のコードを貼り付けます
function sendToSlack(e) {
const webhookUrl = 'https://hooks.slack.com/services/XXXX/YYYY/ZZZZ'; // 取得したWebhook URLに置き換え
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getDataRange().getValues();
const header = data[0];
const courseColIndex = header.indexOf("希望するコースを選んでください");
if (courseColIndex === -1) return;
let beginnerCount = 0;
let experiencedCount = 0;
for (let i = 1; i < data.length; i++) {
const course = data[i][courseColIndex];
if (course.includes("初心者")) beginnerCount++;
else if (course.includes("経験者")) experiencedCount++;
}
const submittedCourse = e.values[courseColIndex];
const message =
`📥 新しいフォーム送信がありました\n` +
`📝 今回の選択: ${submittedCourse}\n\n` +
`📊 現在の申込状況:\n• 初心者:${beginnerCount}名 • 経験者:${experiencedCount}名`;
const payload = JSON.stringify({ text: message });
UrlFetchApp.fetch(webhookUrl, {
method: 'post',
contentType: 'application/json',
payload: payload,
});
}
⑦ トリガー(自動実行)を設定
- スクリプトエディタ左の「時計」アイコン(トリガー)をクリック
- 「トリガーを追加」をクリック
- 以下のように設定
項目 | 設定内容 |
---|---|
実行する関数 | sendToSlack |
実行のタイミング | フォーム送信時(onFormSubmit) |
- 初回は認証画面が出るので、「許可」を進めて完了!
完了!
フォームが送信されると、Slackに以下のような通知が自動で投稿されます
📥 新しいフォーム送信がありました
📝 今回の選択: 初心者(テキストに沿って、1つずつ丁寧に教えます)
📊 現在の申込状況:
• 初心者:12名 • 経験者:21名
応用アイデア
- 定員を超えたら通知に「⚠️定員超過です!」などの警告を追加
- 日付別・コース別の申込数を集計し、曜日ごとの傾向を可視化
コメント