【完全版】GASでフォーム回答をリアルタイム集計する方法|スプレッドシート連携で超効率化!

「アンケート結果をもっと速くまとめたい!」
「イベント申し込み数をリアルタイムで把握したい!」
そんな悩みを解決してくれるのが、Google Apps Script(GAS)を使ったフォーム回答のリアルタイム集計システムです。

この記事では、初心者でもできる「GASによるリアルタイム集計方法」を徹底解説!
設計からスクリプト作成、運用のポイントまで、すぐに使えるノウハウをまとめました。


1. なぜGASでフォーム回答をリアルタイム集計するのか?

Googleフォーム単体でも「回答の一覧表示」はできますが、本格的な集計には正直力不足です。

GASを組み合わせると…

  • フォーム回答をスプレッドシートに即時反映

  • 自動で集計・レポート更新

  • 条件別集計やランキング表示も可能

  • イベント登録数やアンケート回収率をリアルタイムでモニタリング

  • 管理者に自動通知を飛ばす

など、業務レベルの**「使える」集計機能**が手に入ります。


2. 【準備編】リアルタイム集計に必要なもの

用意するものはたったこれだけ!

  • Googleフォーム(作成済み)

  • Googleスプレッドシート(フォーム回答リンク)

  • Google Apps Script(標準搭載)

すべて無料&クラウド完結。
PC1台あれば、今日から始められます!


3. 【設計編】どんなリアルタイム集計を作るのか?

今回の基本設計はシンプルです。

■ 流れ

  1. Googleフォームで回答を取得

  2. 回答をスプレッドシートに保存

  3. GASで集計表を自動生成・自動更新

たとえば、こんなイメージの集計表を作ります。

| 選択肢(質問項目) | 回答数 | 割合 |

※アンケート結果集計にも、イベント申し込み管理にも応用できます!


4. 【実装編】GASでリアルタイム集計システムを作ろう!

ここからは、実際にコードを書きながら作っていきます。


ステップ① スプレッドシートを開く

フォーム回答が保存されるスプレッドシートを用意しましょう。
通常、Googleフォームを作ると自動でリンクされたシートが作成されます。


ステップ② Apps Scriptエディタを開く

スプレッドシートのメニューから
「拡張機能」→「Apps Script」→「新しいプロジェクト作成」


ステップ③ リアルタイム集計スクリプトを書く

以下のスクリプトを記述します。

function aggregateFormResponses() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const responseSheet = ss.getSheetByName('フォームの回答');
  const aggregateSheet = ss.getSheetByName('集計結果') || ss.insertSheet('集計結果');
  
  const responses = responseSheet.getDataRange().getValues();
  
  const counts = {};
  
  for (let i = 1; i < responses.length; i++) {
    const answer = responses[i][1]; // 質問の回答(列番号はフォーム内容により調整)
    counts[answer] = (counts[answer] || 0) + 1;
  }
  
  const total = responses.length - 1;
  
  aggregateSheet.clear();
  aggregateSheet.appendRow(['選択肢', '回答数', '割合']);
  
  for (const option in counts) {
    aggregateSheet.appendRow([
      option,
      counts[option],
      (counts[option] / total * 100).toFixed(1) + '%'
    ]);
  }
}

このコードでは、

  • フォーム回答を読み込み

  • 選択肢ごとに回答数をカウント

  • 回答数と割合を計算して表示
    を自動でやっています!


ステップ④ トリガーを設定して完全自動化!

Apps Scriptエディタの左側メニューから「トリガー」を開き、

  • 関数:aggregateFormResponses

  • イベントソース:フォーム送信時(on form submit)

を設定すれば、
フォーム回答があるたびにリアルタイムで集計表が更新されます!


5. 【応用編】もっと便利にする拡張アイデア


✅ 質問が複数ある場合も対応する

質問項目ごとにカウント処理を分ければ、複数の質問も同時に集計できます。


✅ 特定の回答だけフィルタリングする

「〇〇という回答のみ抽出して集計」も簡単に設定できます。


✅ グラフを自動生成する

集計シートにグラフも自動で作成すれば、より視覚的に結果がわかりやすくなります!

function createChart() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('集計結果');
  const chart = sheet.newChart()
      .setChartType(Charts.ChartType.PIE)
      .addRange(sheet.getRange('A2:B' + sheet.getLastRow()))
      .setPosition(2, 4, 0, 0)
      .build();
  
  sheet.insertChart(chart);
}

集計だけでなく、ビジュアルレポートも自動化できるのがGASの魅力!


6. 【運用編】安定運用するためのポイント


✔️ データ量に注意する

無料プランのスプレッドシートには制限があります。大量データを扱う場合は分割運用を検討しましょう。


✔️ スクリプトの定期メンテナンス

質問内容を変えた場合など、スクリプト側も更新が必要な場合があるので定期的にチェックしましょう。


✔️ 権限設定を適切に

集計用シートには閲覧専用の権限を付与するなど、誤操作防止対策を忘れずに!


まとめ|GASなら、フォーム集計もリアルタイムでスマートに!

アンケート回収、イベント申し込み、社内報告…
「フォーム回答をリアルタイム集計できるだけ」で、
あなたの業務効率は劇的に向上します。

GASを使えば、
無料&ノーコード感覚で実用的な集計システムがすぐに構築可能。

まずは、シンプルな単一質問集計からスタートして、
慣れてきたら「複数質問対応」「グラフ自動生成」「通知機能」へ拡張していきましょう!

Shop now