# Googleフォームの集計を自動化する方法：スプレッドシート連携・関数・GAS・通知

正規URL: https://www.sento.group/concepts/gform-shukei
更新日: 2026-10-31

Googleフォームの集計の自動化とは、フォームに届いた回答をスプレッドシートへ自動でためて、別のシートの関数で件数や合計を出し、必要ならGAS（Google Apps Script）で担当者への通知や別の台帳への転記まで動かすことです。手で集計表を作り直す作業がなくなり、回答が届いた時点で数が更新されます。この記事では、Googleの公式ヘルプで確かめた手順と上限を、説明用の仮想例を使って順に書きます。

## この記事の要点

- 最初にやるのは、フォームの「回答」タブから回答の保存先をスプレッドシートにすることです。回答は自動でテーブル形式のシートにたまります。
- 集計は回答シートに書き込まず、別のシートにCOUNTIF・QUERY・ピボットで作ります。回答が増えても式を直さずに数が更新されます。
- 回答のたびに決まった人へ知らせる、別の台帳へ写す作業が毎回あるなら、GASのフォーム送信時トリガーで動かします。トリガーは作った人のアカウントで動くため、持ち主と通知先を台帳に書いて共有ドライブに残します。

## フォームの集計を自動化すると、どの作業がなくなるか

説明用の仮想例として、社員30人の会社の総務担当が、備品の購入申請をGoogleフォームで受けている場面を考えます。毎週月曜に回答を開き、部署ごとの件数と金額の合計を手で数えて表にし、経理と部長にメールで送っています。自動化すると、この3つの作業が仕組みに置き換わります。

- 回答を集計表へ写す作業：回答はスプレッドシートの回答シートに1件1行で自動的にたまるので、写す作業がなくなります。
- 部署ごとの件数と金額を数える作業：別の集計シートに書いた関数が、回答が届くたびに数を出し直します。
- 経理と部長に知らせる作業：回答が届いた時点で、GASが申請の中身をメールで送ります。週ごとのまとめは、決めた曜日と時刻にGASが送ります。

4つの部品（フォーム・回答シート・集計シート・通知）のうち、どこまで作るかは回答の数と、回答を誰が使うかで決めます。線引きは後半の節で書きます。

今集計しているフォームがあれば、その項目名と、集計した表を誰に渡しているかを書いて送ってください。どの部品から作るかをお返しします。

- [集計しているフォームの項目を送って、自動化の進め方を聞く](https://www.sento.group/contact)
- [GASでできること・自動化の例](https://www.sento.group/concepts/gas-automation)

## 手順1：回答の保存先をスプレッドシートにする

Googleの公式ヘルプ「フォームの回答の保存先を選択する」に書かれている手順は、フォームを開き、「回答」タブの「概要」でその他アイコンから「回答の送信先を選択」を押し、新しいスプレッドシートを作るか既存のスプレッドシートを選ぶ、の順です。

- 回答の形：同じヘルプには、回答をスプレッドシートに保存するとデータが自動的にテーブル形式になると書かれています。1件の回答が1行、1つの質問が1列になります。
- 権限：新しく作った回答用スプレッドシートには、フォームの共同編集者が自動的にアクセスできます。その後にフォームの権限を変えても、スプレッドシートの権限は自動では同期されません。経理や部長に見せるときは、スプレッドシート側で共有を設定します。
- つなぎ直し：フォームとスプレッドシートのリンクを解除すると、新しい回答は送られなくなりますが、それまでのデータはスプレッドシートに残ります。
- 消すとき：スプレッドシートを削除してもフォームは消えず、フォームを削除してもスプレッドシートは消えません。フォームから回答を削除すると元に戻せないため、回答の整理はスプレッドシート側でします。

フォームの質問を後から足したり名前を変えたりすると、回答シートの列も変わります。質問を変える日は、集計シートの式が見ている列名もその日に確かめます。入力のばらつきを質問の作り方で減らす方法は「フォーム入力がバラバラで後工程が地獄になる問題」の記事で書いています。

- [フォーム入力がバラバラで後工程が地獄になる問題の解消](https://www.sento.group/concepts/form-nyuryoku-bara)

## 手順2：回答シートには触らず、集計シートを別に作る

回答シートは、フォームが書き込む原本として扱います。並べ替えや色付け、合計の行を回答シートに足すと、次の回答がどこに入ったか追いにくくなり、誰が何を変えたかも分からなくなります。集計は同じスプレッドシートに「集計」シートを足して、そこに関数で作ります。

- COUNTIF：Googleのヘルプでは「範囲内で条件に一致する要素の個数を返します」と説明されています。選択式の質問の件数を数えるのに使います。
- QUERY：データに対してGoogle Visualization APIのクエリ言語で問い合わせる関数です。部署ごと・月ごとにまとめた表を1つの式で作れます。
- ピボットテーブル：［挿入］→［ピボット テーブル］で作ります。ヘルプには、列ごとに見出しを付ける必要があると書かれています。部署別と月別を画面で入れ替えて試すときに向いています。毎週同じ形の表を人に渡すときは、上の関数で表を固めておくと、受け取る人が毎回同じ場所で数を読めます。

```text
部署ごとの件数（集計シートのB2。A2に部署名）
=COUNTIF('フォームの回答 1'!B:B, A2)

部署ごとの金額の合計（集計シートのC2）
=SUMIF('フォームの回答 1'!B:B, A2, 'フォームの回答 1'!D:D)

部署と金額の一覧を、金額の大きい順に（集計シートのE1）
=QUERY('フォームの回答 1'!A:D, "select B, sum(D) where B is not null group by B order by sum(D) desc", 1)

```

説明用の仮想例。回答シートの名前が「フォームの回答 1」で、B列が部署、D列が金額のとき。

式の範囲は B2:B100 のように行を区切らず、B:B のように列全体を指定します。回答が101件目になっても式を直さずに済みます。

グラフは集計シートの表から作ります。回答シートから直接グラフを作ると、質問を足したときに範囲がずれます。

## 手順3：通知は、標準のメール通知とGASを使い分ける

フォームには、回答が届いたらメールで知らせる設定が最初からあります。Googleのヘルプ「フォームの回答を表示、管理する」では、「回答」タブのその他アイコンから「新しい回答についてのメール通知を受け取る」を押す手順が書かれています。自分が回答の到着を知るだけなら、これで足ります。

- 標準のメール通知で足りる：フォームの持ち主が、回答が来たことを知りたいだけのとき。
- GASにする：経理や部長など決まった人へ、申請の中身（部署・品名・金額）を本文に入れて送りたいとき。金額が一定以上のときだけ部長にも送る、のように条件で送り先を変えたいとき。
- GASにする：回答を別のスプレッドシートの台帳（備品台帳・顧客台帳）へ1行足したいとき。

```javascript
function notifyOnSubmit(e) {
  const v = e.namedValues;
  const lines = Object.keys(v).map(k => k + '：' + v[k].join(', '));
  const amount = Number(v['金額'][0]);
  const to = amount >= 50000 ? 'keiri@example.com,bucho@example.com' : 'keiri@example.com';
  MailApp.sendEmail(to, '備品の購入申請：' + v['部署'][0], lines.join('\n'));
}

```

説明用の仮想例。回答用スプレッドシートの［拡張機能］→［Apps Script］に書き、トリガーで「フォーム送信時」に動かす。宛先は自社のアドレスに置き換える。「部署」「金額」は質問名と一字一句合わせ、金額の質問は数字だけを受け付ける設定にする。

スプレッドシート側のフォーム送信時トリガーでは、e.namedValues に質問名と回答の組が入ります。フォーム側にトリガーを付けた場合は e.response に回答全体が入ります（Google Apps Scriptのイベントオブジェクトの説明による）。同じ処理を両方に付けると2回動くため、どちらか1つにします。

自分で設定するトリガー（インストール可能なトリガー）は、作った人のアカウントで動きます。失敗しても画面にはエラーが出ず、作った人に失敗の要約メールが届き、Apps Scriptの「実行数」の画面で確かめられます。

回答の数と通知の宛先を書いて送ってもらえれば、標準の通知で足りるか、GASにするかをお返しします。

- [集計しているフォームの項目と通知先を送って、自動化の進め方を聞く](https://www.sento.group/contact)
- [GASの制限にぶつかる前に知ること](https://www.sento.group/concepts/gas-seigen-michi)

## 週ごとのまとめは、時間を決めて送る

回答のたびにメールが来ると、件数が多い週は読まれなくなります。部長に渡すのが「先週の部署ごとの件数と合計」なら、回答ごとの通知はやめ、時間主導のトリガーで毎週月曜の朝に集計シートの表を送ります。

- 送る中身は、集計シートの表をそのまま本文に入れるか、集計シートのURLだけを送るかを先に決めます。URLだけなら、受け取る人がスプレッドシートを見られる権限を持っているかを確かめます。
- 回答ごとの通知は経理だけに残し、部長には週1回のまとめだけを送る、のように受け取る人ごとに頻度を分けます。
- まとめのメールには、集計シートの最終更新の時刻と件数を入れます。回答が0件の週もメールを送ると、トリガーが止まっていないことが分かります。

## Googleの上限と、手作業の集計表をやめて仕組みにする線引き

どこまで仕組みにするかは、回答の数、回答を使う人の数、回答のたびに発生する作業があるかで決めます。最初の3つは、冒頭の図の下段の3段と同じです。

- フォームの「回答」タブの概要を見るだけでよい：見るのは自分だけで、件数と割合が分かればよいとき。社内アンケートや、月に数十件の申込受付がこれに当たります。
- 関数の集計シートにする：毎週、回答を見て手で集計表を作り直しているとき。部署別・担当別・月別の数を誰かに渡しているとき。集計表を作る時間が週に30分を超えるなら、関数に任せる目安になります。
- GASで通知と転記まで動かす：回答のたびに決まった人へ知らせる、別の台帳へ写す、返信メールを送る作業が毎回あるとき。
- スプレッドシートの外に移す：回答を複数のフォームから1つの台帳に集める、同時に何人もが台帳を直す、変更の履歴を残す必要があるときは、スプレッドシートでの台帳運用の限界に近づいています。

Googleの公式ヘルプには、回答の概要が表示されないときは回答数が5万件を超えていること、スプレッドシートに同期されないときは10万件を超えていることが原因として考えられると書かれています。同じページには、2026年9月から1つのフォームの回答数の上限が50万件、合計保存容量が1GBになると書かれています。

Apps Scriptの割り当ての表では、1日あたりのメール受信者数が一般ユーザー向けアカウント（gmail.com など）で100、Google Workspaceのアカウントで1,500、トリガーの合計実行時間が一般ユーザー向けで90分／日、Workspaceで6時間／日、1回の実行時間はどちらも6分です。回答ごとに3人へ送る通知は、一般ユーザー向けアカウントだと1日33件ほどの回答で受信者数の上限に届きます。

- [スプレッドシートのデータベース化と、限界の6つのサイン](https://www.sento.group/concepts/spreadsheet-db)
- [Excel転記の止め方](https://www.sento.group/concepts/excel-tenki)

## トリガーの持ち主と通知先を、共有ドライブの台帳に1行で残す

GASのトリガーは作った人のアカウントで動くため、作った人が異動や退職でアカウントを止めると、通知も転記も黙って止まります。止まったことに気づくのは、届くはずのメールが来ないと誰かが言い出したときです。

回答用スプレッドシートとGASは、会社の共有ドライブに置きます。同じ共有ドライブに「フォーム自動化の台帳」のシートを1つ作り、フォームごとに1行、フォーム名・回答用スプレッドシートのURL・トリガーを作った人・トリガーの種類（フォーム送信時／毎週月曜8時など）・通知の宛先・最後に動作を確かめた日を書きます。

担当者が替わる日は、この台帳の行を見ながら新しい担当者のアカウントでトリガーを作り直し、テストの回答を1件送って通知が届くことを確かめてから、前の担当者のトリガーを消します。台帳の「最後に動作を確かめた日」をその日に書き換えます。

- [属人化とは](https://www.sento.group/concepts/zokunin-flow)
- [承認フローの見直し方](https://www.sento.group/concepts/shonin-flow)

## よくある質問

### Q. 回答が増えると、集計シートの式を直す必要がありますか？

COUNTIF や QUERY の範囲を B:B や A:D のように列全体で指定しておけば、回答が増えても式はそのままで数が更新されます。ピボットテーブルも、範囲を列全体で指定すれば回答の増加に合わせて集計されます。関数の書き方は Google の[COUNTIF のヘルプ](https://support.google.com/docs/answer/3093480?hl=ja)と[QUERY のヘルプ](https://support.google.com/docs/answer/3093343?hl=ja)にあります。

### Q. 回答の通知を、自分以外の人にも送れますか？

フォームの標準のメール通知は、設定した人が自分で受け取るための機能です。経理や部長など決まった人へ回答の中身を送るときは、GASのフォーム送信時トリガーで MailApp を使います。1日に送れる受信者数には上限があり、[Apps Script の割り当て](https://developers.google.com/apps-script/guides/services/quotas?hl=ja)では一般ユーザー向けアカウントで100、Google Workspace で1,500です（2026年10月31日に確認）。

### Q. GASの通知が急に届かなくなりました。何を確かめればいいですか？

まず、トリガーを作った人のアカウントが使える状態か（異動・退職で止まっていないか）を確かめます。次に Apps Script の「実行数」の画面で、失敗した実行とエラーを見ます。[インストール可能なトリガーの説明](https://developers.google.com/apps-script/guides/triggers/installable)には、失敗しても画面にはエラーが出ず、作った人に失敗の要約メールが届くと書かれています。

### Q. フォームの回答は何件まで保存できますか？

[フォームの回答を表示、管理する](https://support.google.com/docs/answer/139706?hl=ja)のヘルプには、2026年9月から1つのフォームあたりの回答数50万件、合計保存容量1GBの上限が適用されると書かれています。回答の概要が出ないときは5万件、スプレッドシートに同期されないときは10万件を超えていることが原因として考えられる、とも書かれています。

### Q. スプレッドシートとのつなぎ方の公式の手順はどこにありますか？

Google の[フォームの回答の保存先を選択する](https://support.google.com/docs/answer/2917686?hl=ja)に、回答タブから回答の送信先を選ぶ手順、権限が自動で同期されないこと、リンクを解除してもデータが残ることが書かれています。

## 集計しているフォームの項目を送って、自動化の進め方を聞く

フォームの質問の一覧、月の回答数、集計した表を誰に渡しているかを書いて送ってください。概要タブで足りるか、関数の集計シートにするか、GASで通知と転記まで動かすかと、最初に作る部品をお返しします。

- [集計しているフォームの項目を送って相談する](https://www.sento.group/contact?topic=data-operations&source=gform-shukei)
- [データ基盤構築・業務再設計](https://www.sento.group/services/data-operations)

## この考え方の背景を、noteで読む

- [スモールデータオプティマイゼーション（SDO）とは？](https://note.com/wajimayuki/n/n663579d17e1c): 代表・和島祐生が、データと一緒に判断の背景やルールも整える理由を掘り下げています。

## 関連リンク

- [GASでできること・自動化の例](https://www.sento.group/concepts/gas-automation)
- [GASの制限にぶつかる前に知ること](https://www.sento.group/concepts/gas-seigen-michi)
- [フォーム入力がバラバラで後工程が地獄になる問題の解消](https://www.sento.group/concepts/form-nyuryoku-bara)
- [スプレッドシートのデータベース化](https://www.sento.group/concepts/spreadsheet-db)
- [データ活用とは](https://www.sento.group/concepts/data-katsuyo)
- [ホームに戻る](https://www.sento.group/)
