即納AIラボ ← 納品サンプル一覧へ
納品サンプル(架空)

GASサンプル:フォーム回答 → Slack/メール通知 + 集計シート自動更新

実際にお渡しする成果物と同じ形式のサンプルです。登場する企業名・担当者名・数値はすべて架空で、実在の依頼内容は含みません。

対象サービス:スプレッドシート/GAS/Excel自動化
このページはサンプルの内容をWebで読みやすく表示したものです。実際の納品はWord/PDFで、表紙・スコアのグラフ・優先度マトリクスを入れた体裁でお渡しします。
Code.gs

GASサンプル:フォーム回答 → Slack/メール通知 + 集計シート自動更新

「スプレッドシート/GAS/Excel自動化(¥5,000〜)」の納品サンプルです。

Googleフォームの回答が届くたびに、Slack とメールに通知し、集計シートを自動で更新します。

できること

機能内容
Slack通知回答内容を Incoming Webhook で指定チャンネルに投稿
メール通知回答内容を指定アドレス(複数可)に送信。件名に1問目の回答が入る
集計シート累計・今日・直近7日・直近30日の件数、日別件数(30日)、選択式設問ごとの内訳を自動生成
安全設計URLやアドレスはコードに書かずスクリプトプロパティで管理。通知・集計のどれかが失敗しても他は実行され、失敗内容はログに残る

導入手順(所要10分)

1. フォームとスプレッドシートをつなぐ

  1. Googleフォームを開き、「回答」タブ → スプレッドシートのアイコンをクリック
  2. 「新しいスプレッドシートを作成」を選ぶ(既存のものでも可)
  3. 作成されたスプレッドシートを開く。「フォームの回答 1」というシートがあることを確認

2. スクリプトを貼り付ける

  1. スプレッドシートのメニュー「拡張機能」→「Apps Script」
  2. 開いたエディタの コード.gs の中身をすべて削除し、同梱の Code.gs の内容を貼り付ける
  3. 上部の保存アイコン(またはCtrl+S)で保存

3. 通知先を設定する(スクリプトプロパティ)

  1. エディタ左の歯車アイコン「プロジェクトの設定」をクリック
  2. 一番下の「スクリプト プロパティ」→「スクリプト プロパティを追加」
  3. 次のプロパティを追加(不要なものは追加しなくてよい)
プロパティ名値の例説明
SLACK_WEBHOOK_URLhttps://hooks.slack.com/services/...Slack の Incoming Webhook URL。取得方法は下記
NOTIFY_EMAILyou@example.com, team@example.com通知先メール。カンマ区切りで複数可
SUMMARY_SHEET集計集計シート名(省略可)
SUBJECT_PREFIX[お問い合わせ]メール件名の先頭(省略可)

Slack Webhook URL の取得: Slack の「アプリ」→「Incoming Webhook」を追加 → 投稿先チャンネルを選択 → 表示された URL をコピー。この URL は投稿権限そのものなので、他人に共有しないでください。

4. トリガーを作成する

  1. エディタ上部の関数選択で setupTrigger を選び「実行」
  2. 初回は権限の承認画面が出る → 自分のアカウントを選び「詳細」→「(プロジェクト名)に移動」→「許可」
  3. 実行ログに「トリガーを作成しました」と出れば完了

5. 動作確認

  • フォームから1件テスト送信する
  • または、回答が1件以上ある状態で関数 testWithLastResponse を実行(最新の回答で通知と集計を試す)
  • Slack/メールに通知が届き、「集計」シートが作られていれば成功

集計シートの見方

項目            件数
累計回答数      128
今日            3
直近7日         21
直近30日        74
最終更新        2026-09-08 10:12:34

日別回答数(直近30日)  件数
2026-08-10              2
...

内訳: お問い合わせ種別   件数
資料請求                 52
見積依頼                 41
その他                   35
  • 「内訳」は、回答の種類が12種類以下の設問(ラジオボタン・プルダウン・チェックボックス)だけ自動で作られます。自由記述は対象外です
  • 集計は毎回作り直すので、回答を削除・修正しても数字が正しく保たれます

カスタマイズのヒント

やりたいこと変更箇所
内訳を作る設問の上限を変えるMAX_DISTINCT_FOR_BREAKDOWN の数値
日別集計の期間を変えるDAILY_WINDOW_DAYS の数値
通知文の形式を変えるbuildMessageText 関数
特定の回答だけ通知する(例:「至急」を含むとき)onFormSubmitHandler の先頭で record.fields を見て return する
Chatwork/LINE に通知するnotifySlack を参考に、各サービスの API へ UrlFetchApp.fetch する関数を追加

トラブルシューティング

症状原因と対処
通知が届かない「実行数」(エディタ左の時計アイコン)でエラーを確認。SLACK_WEBHOOK_URL / NOTIFY_EMAIL の綴りとプロパティ名を確認
「回答シートが見つかりません」フォームとスプレッドシートがリンクされているか確認(手順1)
権限エラーsetupTrigger を再実行し、承認画面で「許可」を選ぶ
メールが1日の上限に達した無料 Gmail は1日100通まで。Workspace は1,500通。上限に近い場合は Slack 通知のみにする
集計シートが古い関数 rebuildSummaryOnly を実行すると通知なしで集計だけ作り直せます

注意事項

  • 回答に個人情報が含まれる場合、Slack チャンネルの公開範囲にご注意ください
  • Webhook URL やメールアドレスをコードに直接書かないでください(スプレッドシートを共有した相手に見えてしまいます)
  • 本サンプルは Google Apps Script の V8 ランタイムで動作します(2020年以降の標準設定)

納品時に含まれるもの(実際のご依頼の場合)

  • お客様のフォーム項目に合わせて調整した Code.gs
  • 上記と同様の導入手順書(スクリーンショット付き)
  • 導入後7日間のメールサポート(設定のつまずき対応)