Googleフォームでお問合せやアンケートを集計していると、「回答の内容(部署やお問い合わせ種別)ごとにシートを分けて管理したい」と思ったことはありませんか?
手動でコピー&ペーストして振り分けるのは時間がかかりますし、転記ミスの原因にもなります。
そこで活躍するのがGAS(Google Apps Script)です。 GASを使えば、Googleフォームから回答が送信された瞬間に、指定した選択肢に応じて別シートへ自動で振り分けて転記する仕組みを簡単に構築できます。
この記事では、プログラミング初心者の方でもできるように、コピペで使えるコードと詳しい設定手順をわかりやすく解説します。
今回作成する自動振り分けの仕組み
今回は例として、以下のような「お問い合せフォーム」を作成し、お問い合わせ種別に応じて回答を別シートに自動振り分けします。
- フォームの質問:
- メールアドレス
- お名前
- お問い合わせ種別(ラジオボタン:
お見積り/ご質問/その他) - お問い合わせ内容
- 振り分け先:
- 「お見積り」を選択 ➔ 「見積シート」へ自動転記
- 「ご質問」を選択 ➔ 「質問シート」へ自動転記
- 「その他」を選択 ➔ 「その他シート」へ自動転記

STEP 1:Googleフォームとスプレッドシートの準備
まずはベースとなるフォームとスプレッドシートを用意します。
- Googleフォームを作成する 質問項目を作成します。振り分けの基準となる質問(例:お問い合わせ種別)の選択肢の表記を覚えておいてください。
- 回答の連携先スプレッドシートを作成する フォームの「回答」タブを開き、「スプレッドシートにリンク」をクリックして連携します。自動的に「フォームの回答 1」というシートが生成されます。
- 振り分け先のシートを追加する スプレッドシートの左下の「+」ボタンをクリックし、振り分け先となるシート(例:
見積シート、質問シート、その他シート)をあらかじめ作成しておきます。 ※1行目にヘッダー(項目名)を入れておくと見やすくなります。
STEP 2:GASのエディタを開く
スプレッドシート側からGASを起動します。
- スプレッドシートの上部メニューから 「拡張機能」 ➔ 「Apps Script」 をクリックします。
- スクリプトエディタが開いたら、最初から入っている
function myFunction() {...}をすべて削除して空にします。

STEP 3:GASコードをコピペして貼り付ける
以下のコードをコピーして、Apps Scriptのエディタに貼り付けてください。
function autoDistributeFormAnswers(e) {
// イベントオブジェクトが存在しない場合は処理を中断(手動実行時のエラー防止)
if (!e) {
Logger.log("この関数はフォーム送信時のトリガーで実行してください。");
return;
}
// アクティブなスプレッドシートを取得
var ss = SpreadsheetApp.getActiveSpreadsheet();
// フォームから送信された回答データを取得
var responses = e.values;
// e.values[0]: タイムスタンプ
// e.values[1]: メールアドレス
// e.values[2]: お名前
// e.values[3]: お問い合わせ種別(振り分け基準)
// e.values[4]: お問い合わせ内容
// 振り分け基準となる「お問い合わせ種別」の値を取得(インデックスは0から始まるため3番目)
var category = responses[3];
// 振り分け先のシート名を決定
var targetSheetName = "";
if (category === "お見積り") {
targetSheetName = "見積シート";
} else if (category === "ご質問") {
targetSheetName = "質問シート";
} else if (category === "その他") {
targetSheetName = "その他シート";
}
// 対象のシートを取得して行を追加
if (targetSheetName !== "") {
var targetSheet = ss.getSheetByName(targetSheetName);
if (targetSheet) {
// データを指定したシートの最下行に追加
targetSheet.appendRow(responses);
} else {
Logger.log("指定されたシート「" + targetSheetName + "」が見つかりませんでした。");
}
}
}コードの解説・ポイント
e.values:フォームから送信された回答データが配列(順番に並んだリスト)として入っています。e.values[0]= タイムスタンプe.values[1]= 1番目の質問(例:メールアドレス)e.values[2]= 2番目の質問(例:お名前)e.values[3]= 3番目の質問(例:お問い合わせ種別)
category === "お見積り":フォームの回答内容と一致するか判定しています。フォーム上の文字と1文字でも違うと正しく動きませんので注意してください。appendRow(responses):指定したシートの一番下の行に、回答データをそのまま追加します。
コードを貼り付けたら、エディタ上部のフロッピーディスクのアイコン(保存)をクリックして保存します。
STEP 4:フォーム送信時のトリガーを設定する
コードを書いた直後の状態では、フォームが送信されてもプログラムは動きません。「フォームが送信された時にこのプログラムを実行する」という通知設定(トリガー)を行います。
- Apps Script画面の左メニューにある時計マークアイコン(トリガー)をクリックします。
- 画面右下の 「+ トリガーを追加」 ボタンをクリックします。
- 設定画面で以下のように設定します:
- 実行する関数を選択:
autoDistributeFormAnswers - 実行するデプロイを選択:
Head - イベントの源を選択:
スプレッドシートから - イベントの種類を選択:
フォーム送信時(★ここを必ず変更してください)
- 実行する関数を選択:
- 右下の 「保存」 をクリックします。
- 途中でGoogleアカウントへのアクセス許可(認証)を求められた場合は、画面の指示に従って「詳細」➔「安全ではないページに移動」➔「許可」の順で進めて承認してください。
STEP 5:動作確認を行う
設定が完了したら、実際にテストしてみましょう。
- 作成したGoogleフォームのプレビューを開き、テスト回答を送信します(例:お問い合わせ種別で「お見積り」を選択)。
- スプレッドシートを確認し、「フォームの回答 1」に回答が追加されると同時に、「見積シート」にも同じデータが自動追加されていれば成功です!
自分のフォームに合わせてカスタマイズする方法
ご自身のフォームの項目に合わせてコードを調整する際のポイントは2点です。
1. 質問の順番(番号)を合わせる
コード内の responses[3] の数字は、フォームの何番目の回答かを表しています(0から数えます)。
responses[0]➔ タイムスタンプ(自動)responses[1]➔ 1番目の質問responses[2]➔ 2番目の質問responses[3]➔ 3番目の質問
振り分け条件にしたい質問が「2番目」にある場合は、responses[2] に変更してください。
2. 選択肢やシート名を変更する
選択肢が増えた場合は、if 文(条件分岐)を追加します。
if (category === "お見積り") {
targetSheetName = "見積シート";
} else if (category === "ご質問") {
targetSheetName = "質問シート";
} else if (category === "採用について") { // 選択肢を追加
targetSheetName = "採用シート"; // 振り分け先のシート名
} else {
targetSheetName = "その他シート";
}うまく動かない時のチェックリスト
もし別シートにデータが振り分けられない場合は、以下の項目を確認してみてください。
- シート名や選択肢の文字が完全一致しているか? (例:「お見積り」と「お見積もり」、前後に余計なスペースが入っていないか等)
- トリガーの「イベントの種類」が「フォーム送信時」になっているか? (デフォルトの「起動時」のままだと動作しません)
responses[3]の番号がずれていないか? (フォームの質問順を変更・削除した場合は番号も更新が必要です)
まとめ
GASを活用してGoogleフォームの回答を自動振り分けすることで、業務効率が格段にアップします。
一度トリガーを設定してしまえば、あとは放っておいても指定したシートへ綺麗に整理されてデータが溜まっていきます。部署ごとのタスク割り振りや、問い合わせの種別管理などにぜひ役立ててみてください!