目次
Contents
Googleフォームの回答を自動でグラフ化する方法(スプレッドシート連携)
アンケートや申込フォームの結果は、スプレッドシートのグラフにしておくと一目で傾向がわかります。この記事では、Googleフォーム → スプレッドシート連携から、自動更新されるグラフの作り方、共有・配信のコツまでを解説します。GASの自動レポート(任意)も最後に掲載します。
全体の流れ
- フォームを作成し、スプレッドシートにリンクする
- 集計用シートを作る(関数 or ピボットテーブル)
- グラフを作成(円/棒/折れ線)
- データ範囲を自動拡張させておく(関数・名前付き範囲)
- 共有:ウェブ公開/サイト埋め込み/ビューア権限
- (任意)GASでグラフをメール配信
① フォームをスプレッドシートにリンク
- フォーム編集画面 → 応答 タブ → スプレッドシートのアイコン → 新規作成
- 以後、回答が入るたびに「フォームの回答」シートへ自動で追加されます
② 集計用シートを作る(関数派 / ピボット派)
方法A:関数で集計(手軽&柔軟)
例:「性別」の回答数を自動集計して円グラフにする。
| セル | 式 | 説明 |
|---|---|---|
| B2 | =UNIQUE('フォームの回答'!C2:C) | 選択肢の一覧(例:男性/女性/無回答) |
| C2 | =COUNTIF('フォームの回答'!C2:C,B2) | B2の人数をカウント |
| C2を下へ | オートフィル | 各選択肢の人数を自動集計 |
選択肢が増減しても、UNIQUE+COUNTIF の組み合わせなら自動反映されます。
方法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 / ピボットで集計 → グラフ化しておけば、新規回答が入るたびに自動更新されます。公開やメール配信まで整えると、報告作業が一気にラクになります。
