Googleフォームでアンケートや申し込みフォームを作成したあと、回答データを手動でコピー&ペーストしていませんか。回答が増えるたびに手作業で転記するのは手間がかかり、ミスも発生しやすくなります。実はGoogleフォームは最初からスプレッドシートと連動する機能を備えており、回答を自動で取り込むことができます。この記事ではフォーム回答をスプレッドシートに自動連携する3つの方法と、設定時の注意点を詳しく解説します。
【要点】Googleフォームの回答をスプレッドシートに自動取り込む方法
- フォーム作成時の連動シート作成: フォーム編集画面の「回答」タブからスプレッドシートを作成すると、新しい回答が自動で追加されます。
- 既存フォームのシート変更: すでに運用中のフォームでも「回答の保存先」から別のシートを指定して連動を切り替えられます。
- スクリプトによる高度なカスタマイズ: Apps Scriptを使って回答を別のシートに振り分けたり、特定の条件で通知を送ることも可能です。
ADVERTISEMENT
目次
フォームとスプレッドシートが自動連動する仕組み
Googleフォームで作成したフォームには、回答を保存するための「回答の保存先」という設定があります。ここでスプレッドシートを指定すると、フォームが送信されるたびにそのシートの1行目に新しい回答が自動的に追加されます。この仕組みにより、回答の手動転記が完全に不要になります。連動するスプレッドシートはフォーム作成時に新規作成することも、既存のスプレッドシートを指定することもできます。また、1つのフォームに対して複数のスプレッドシートを連動させることはできませんが、1つのスプレッドシートの複数シート(タブ)に回答を振り分けることは可能です。
フォーム作成時に自動連動シートを作成する手順
最も簡単な方法は、フォームを作成する段階でスプレッドシートを連動させることです。以下の手順で進めてください。
- フォーム編集画面を開く
Googleフォーム(forms.google.com)にアクセスし、新しいフォームを作成するか、既存のフォームを開きます。右上の「送信」ボタンの横にある「回答」タブをクリックしてください。 - スプレッドシートの作成アイコンをクリック
「回答」タブの右上に緑色のスプレッドシートアイコンがあります。これをクリックすると、「回答の保存先を選択」ダイアログが表示されます。 - 「新しいスプレッドシートを作成」を選択
ダイアログでは「新しいスプレッドシートを作成」と「既存のスプレッドシートを選択」の2択があります。新しく連動専用のシートを作りたい場合は前者を選び、シート名を入力して「作成」をクリックします。すると自動的にGoogleスプレッドシートが開き、1行目にフォームの質問項目がヘッダーとして書き込まれます。 - 回答をテスト送信して確認
フォームをプレビューしてテスト回答を1件送信します。スプレッドシートを開き、2行目以降に自動でデータが追加されていることを確認してください。これで連動設定は完了です。
既存のフォームに後からスプレッドシートを連動させる手順
すでに運用中のフォームでも、後からスプレッドシートを連動させることができます。設定を変更しても、それまでに集まった回答は消えません。以下の手順で行います。
- フォームの「回答」タブを開く
フォーム編集画面を開き、「回答」タブをクリックします。すでに回答が蓄積されている場合は、回答の一覧が表示されます。 - 「回答の保存先」の三点リーダをクリック
「回答」タブの右上に「スプレッドシートにリンク」というグレーのボタンがある場合、それをクリックします。すでに連動中の場合は、現在のスプレッドシート名がリンク表示されています。その右側の三点リーダ(縦の三点)をクリックし、「回答の保存先を選択」を選びます。 - 既存のスプレッドシートを選択する
ダイアログで「既存のスプレッドシートを選択」を選び、目的のスプレッドシートをドライブから選びます。注意点として、既存のシートにヘッダー行がすでにある場合、フォームの質問項目と一致している必要があります。一致しない場合は新しいシートが追加されるか、エラーの原因になります。 - 「選択」をクリックして完了
スプレッドシートを選択したら「選択」ボタンをクリックします。するとフォームの回答がそのスプレッドシートのアクティブなシートに自動で追加されるようになります。既存の回答は自動では移行されませんが、手動でコピーすれば統合できます。
ADVERTISEMENT
フォーム回答を別のシートに自動振り分けする方法
1つのフォームで複数の部署やカテゴリのデータを受け取る場合、回答内容に応じてシートを分けたいことがあります。標準機能では1つのシートにしか保存できませんが、Apps Script(Google Apps Script)を使えば自動振り分けが可能です。以下に簡単なサンプルを示します。
- スプレッドシートのスクリプトエディタを開く
連動しているスプレッドシートを開き、メニューから「拡張機能」→「Apps Script」を選びます。スクリプトエディタが新しいタブで開きます。 - サンプルコードを貼り付ける
エディタに以下のコードを貼り付けます。このコードはフォーム回答が追加されたときに、回答の質問の値(例:部署名)に応じて別のシートにコピーするものです。function onFormSubmit(e) {
var sheet = e.source.getActiveSheet();
var row = e.range.getRow();
var data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
var category = data[1]; // 例:B列にカテゴリがある場合
var targetSheet = sheet.getParent().getSheetByName(category);
if (targetSheet) {
targetSheet.appendRow(data);
}
} - トリガーを設定する
スクリプトエディタの左メニューから「トリガー」を選び、「トリガーを追加」をクリックします。関数を「onFormSubmit」、イベントを「スプレッドシートから」「フォーム送信時」に設定して保存します。初回は権限の承認が必要です。 - テスト送信して動作確認
フォームをテスト送信し、指定した条件のシートにデータがコピーされるか確認します。うまく動かない場合はログを確認してデバッグしてください。
連動シートでよくあるトラブルと注意点
フォームの質問項目が変わったときにシートのヘッダーがずれる
フォームの質問を追加・削除・並び替えると、連動シートの1行目(ヘッダー)は自動では更新されません。その結果、新しい回答の列がずれてしまい、データが正しく保存されないことがあります。質問を変更したら、必ず連動シートのヘッダー行を手動で修正してください。また、変更前にシートのバックアップを取ることをおすすめします。
回答が二重に保存されてしまう
スプレッドシートに手動で同じデータを貼り付けたあとにフォームが送信されると、重複データが生まれます。これを防ぐには、連動シートには直接編集を加えず、別のシートでデータを加工するようにしましょう。また、Apps Scriptのトリガーが複数設定されている場合も重複の原因になります。トリガーは1つだけにしておいてください。
「回答の保存先」に既存のスプレッドシートが選択できない
ドライブのアクセス権限が適切でないと、既存のスプレッドシートを選択できないことがあります。スプレッドシートの所有者が自分であるか、編集権限が付与されていることを確認してください。また、フォームとスプレッドシートが同じGoogleアカウントで管理されている必要があります。
まとめ
Googleフォームの回答をスプレッドシートに自動取り込むには、フォーム作成時に「回答」タブから新しいシートを作成する方法が最も簡単です。既存のフォームでも「回答の保存先」を変更すれば後から連動できます。さらに業務に合わせて、Apps Scriptで回答を自動振り分けたり、条件に応じて通知を送ることも可能です。ぜひ今回紹介した手順を試して、データ収集の効率を大きく向上させてください。次のステップとして、IMPORTRANGE関数を使えば連動シートのデータを別のファイルから参照することもできますので、あわせてご検討ください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
