Googleフォームの回答を自動でグラフ化する方法

目次

Googleフォームの回答を自動でグラフ化する方法(スプレッドシート連携)

アンケートや申込フォームの結果は、スプレッドシートのグラフにしておくと一目で傾向がわかります。この記事では、Googleフォーム → スプレッドシート連携から、自動更新されるグラフの作り方、共有・配信のコツまでを解説します。GASの自動レポート(任意)も最後に掲載します。

全体の流れ

  1. フォームを作成し、スプレッドシートにリンクする
  2. 集計用シートを作る(関数 or ピボットテーブル)
  3. グラフを作成(円/棒/折れ線)
  4. データ範囲を自動拡張させておく(関数・名前付き範囲)
  5. 共有:ウェブ公開/サイト埋め込み/ビューア権限
  6. (任意)GASでグラフをメール配信

① フォームをスプレッドシートにリンク

  • フォーム編集画面 → 応答 タブ → スプレッドシートのアイコン → 新規作成
  • 以後、回答が入るたびに「フォームの回答」シートへ自動で追加されます

② 集計用シートを作る(関数派 / ピボット派)

方法A:関数で集計(手軽&柔軟)

例:「性別」の回答数を自動集計して円グラフにする。

セル説明
B2=UNIQUE('フォームの回答'!C2:C)選択肢の一覧(例:男性/女性/無回答)
C2=COUNTIF('フォームの回答'!C2:C,B2)B2の人数をカウント
C2を下へオートフィル各選択肢の人数を自動集計

選択肢が増減しても、UNIQUECOUNTIF の組み合わせなら自動反映されます。

方法B:ピボットテーブルで集計(大量データに強い)

  • データ範囲:フォームの回答 全体(見出し行も含む)
  • メニュー → 挿入 → ピボットテーブル → 新しいシート
  • 行:性別 / 値:性別 の個数(集計方法=COUNTA)

ピボットはクリック操作で項目を入れ替えられるため、「地域 × 年代」などの多軸分析に向きます。

③ グラフを作る(自動更新)

  • 集計表を選択 → 挿入 → グラフ
  • グラフエディタ → グラフの種類 を選ぶ(円/棒/折れ線/ドーナツなど)
  • 「カスタマイズ」タブで色やラベル、凡例、データラベルをオン

スプレッドシートは、元データが増えると自動でグラフが更新されます。フォームの新規回答も即時反映。

④ データ範囲を自動拡張にして「ほったらかし」

回答が増えても範囲指定を直さないで済むよう、動的な範囲を使いましょう。

  • 列まるごと参照'フォームの回答'!C2:C(終端なし)
  • QUERY で抽出:=QUERY('フォームの回答'!A2:Z,"select C,count(C) where C is not null group by C label count(C)''",0)
  • 名前付き範囲:データ → 名前付き範囲で answers_gender を作成 → グラフのデータ範囲に =answers_gender

特に QUERY は「空欄除外」「グループ化」「並べ替え」まで一発でこなせるので、実務の定番です。

⑤ 共有と公開(ダッシュボード化)

  • ウェブに公開: グラフ右上の︙ → グラフを公開リンク/埋め込み を選択(サイト・ブログに貼れる)
  • 閲覧専用共有: 共有 → 閲覧者(コメント不可)に設定してURLを配布
  • ダッシュボード: 同じシートに複数グラフ+スライサー(データ → スライサー)で絞り込み画面に

社外共有は「公開」の前に、個人情報のマスキングや集計シートのみの共有に切り替えるのが安全です。

⑥ (任意)GASでグラフを定期メール配信

週次レポートを自動送信したい場合は、グラフを画像としてメールに添付するスクリプトが便利です。

/**
 * スプレッドシートの最初のグラフを画像にしてメール送信
 * - トリガー:時間主導型(例:毎週月曜9:00)
 */
function mailChartWeekly(){
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("集計"); // グラフがあるシート名
  const charts = sh.getCharts();
  if (!charts.length) throw new Error("グラフが見つかりません");

  // グラフを一時シートにエクスポートして画像化
  const blob = charts[0].getAs("image/png").setName("chart.png");

  GmailApp.sendEmail("report@example.com",
    "【週次】フォーム集計グラフ",
    "最新の集計グラフをお送りします。",
    {attachments:[blob], name:"自動レポート"}
  );
}

初回実行時は権限の承認が必要です。
複数グラフを送る場合は charts.forEach で回して添付を増やせます。

よくあるつまずきと対策

  • グラフが更新されない: データ範囲が固定(例:A2:C100)になっていないか確認。列参照やQUERYに変更。
  • 選択肢が増えて崩れる: UNIQUE でラベルを生成、COUNTIF でカウントすれば自動追従します。
  • 回答が多くて重い: ピボットテーブル+スライサー、または別スプレッドシートに集計を分離。
  • 社外共有で個人情報が見える: 元データを共有せず、集計シートだけを別ブックに IMPORTRANGE で取り込み公開。

まとめ

Googleフォームの回答をスプレッドシートに連携し、UNIQUE+COUNTIF / QUERY / ピボットで集計 → グラフ化しておけば、新規回答が入るたびに自動更新されます。公開やメール配信まで整えると、報告作業が一気にラクになります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次