サイトの問い合わせフォームから届いたメールが、見積もりの催促や外注先とのやりとりに埋もれて、気づいたら2日経っていた。あとで数えようとしても、今月いくつ問い合わせが来たのか、そのうち何件が受注になったのかが分からない。受注の入口なのに、受信箱の中でいちばん雑に扱われているのが問い合わせです。

Googleフォームで問い合わせを案件化するなら、回答シートに新しいシートを重ねるのではなく、回答シートの右に列を5つ足すのが最短です。優先度と初回返信期限は数式で自動で立ち、手で入れるのはステータスと対応メモの2つだけ。そのうえで「未対応だけが出るシート」を1枚作れば、毎朝そこだけ見れば取りこぼしが消えます。

Googleフォームの案件化とは、フォームの回答をスプレッドシートに自動で溜めたうえで、優先度・初回返信期限・対応ステータスを付けて、受注につながるまで1件ずつ追える状態にする管理方法です。

この記事の要点

  • 予算と時期は自由記述ではなく選択式にする。選択式にしておくと優先度を数式で自動判定できる
  • 管理用の列は回答シートの右に足す。別シートにQUERYで移して手入力の列を並べると、行がずれた瞬間に嘘のデータになる
  • 毎朝見るのは「未対応」シート1枚だけ。この記事の数式はそのままコピーして貼れる
Googleフォームの問い合わせを案件化する流れの図。フォーム回答が回答シートに1行ずつ追加され、優先度と返信期限は数式で自動、ステータスとメモだけ手入力、未対応ビューに集約される

問い合わせをメールのまま扱うと何が落ちるのか

問い合わせが受信箱にしかないと、3つのことが落ちます。

1つめは返信の期限です。メールには「いつまでに返すか」が書かれていません。急ぎの相談も、半年先の相談も、同じ見た目で同じ場所に届きます。結果として、返す順番は「たまたま目に入った順」になります。

2つめは対応中かどうかの状態です。既読かどうかは分かっても、返信したのか、返信したうえで相手の返事を待っているのかは分かりません。スターを付ける運用は、外すのを忘れた瞬間に意味を失います。

3つめは数です。今月の問い合わせが何件で、どこから来て、いくつが受注になったか。これが分からないと、新規開拓のチャネルのどれに時間を使うべきかを判断できません。フォームからの問い合わせは待ちのチャネルに見えますが、数えていれば「紹介の問い合わせは受注率が高い」といった事実が出てきて、紹介を頼む動機になります。

この3つはどれも、スプレッドシートに列を足すだけで解けます。

フォームに入れる項目は9つでいい

まずフォーム側です。項目を増やすほど離脱するので、後工程で使う項目だけに絞ります。次の9つが最小構成です。

質問形式必須選択肢・使いみち
会社名記述式(短文)○既存顧客・過去の問い合わせとの突き合わせに使う
お名前記述式(短文)○返信の宛名
メールアドレス記述式(短文・メールの検証あり)○返信先。検証を付けると打ち間違いが減る
電話番号記述式(短文)必須にすると離脱が増える。任意でよい
ご依頼の区分ラジオボタン○新規制作/リニューアル/改修・保守/システム開発/その他
概算のご予算ラジオボタン○〜30万円/30〜100万円/100万円以上/未定
ご希望の時期ラジオボタン○1ヶ月以内/3ヶ月以内/半年以内/未定
ご依頼内容記述式(段落)○ヒアリングの下地になる
弊社を知ったきっかけプルダウン検索/紹介/SNS/過去の取引/その他

予算と時期を選択式にするのが肝です。自由記述だと「相談しながら決めたい」といった文章が入り、数式で優先度を出せません。選択式にしておけば、そのまま判定の材料になります。

選択肢に「未定」を必ず入れてください。予算が決まっていない段階の相談は珍しくなく、選べる肢がないと、その人はフォームを閉じます。未定で届いた問い合わせは、そこから決めていく前提で話を聞けばよいだけです。聞く項目を詰めたい場合はヒアリングシートの作り方に10項目を並べてあります。フォームでは全部聞かず、初回の打ち合わせで聞く分はフォームから外します。

フォームの編集画面で上部の「回答」を開き、右上のスプレッドシートへのリンクのボタンを押すと、回答シートができます(出典:Google ドキュメント エディタ ヘルプ「フォームの回答を表示、管理する」、2026年10月1日確認)。以降、送信された回答はこのシートに追加されていきます。

管理用の列は回答シートの右に足す

ここが一番つまずくところです。

よくやるのは、別シートを作ってQUERYで回答を引っ張り、その右にステータス列を並べる作り方です。これは壊れます。QUERYの結果は回答が増えたり並び順が変わったりすると上下に動きますが、手で入れたステータスは動きません。1行ずれた瞬間に、A社の対応メモがB社の行に付きます。

正しいのは、回答シートそのものの右に列を足すことです。回答と同じ行の右側に書いておけば、ステータスやメモはその回答と同じ行に並び続けます。

フォームの質問が上の9つなら、回答シートはA列がタイムスタンプ、B〜J列が各質問です。K列以降に次の5つを足します。

列見出し入力内容
K優先度自動予算と時期からA/B/Cを付ける
L初回返信期限自動受信の翌営業日12時
Mステータス手(プルダウン)未対応/返信済/打ち合わせ待ち/見積提出/受注/失注
N対応メモ手誰が何を返したか。1行でよい
O結果手受注/失注/保留

ひとつ注意があります。あとからフォームに質問を追加したら、回答シートの列の並びを確かめ、下の数式の参照列が合っているかを見直してください。フォームの項目は最初に決め切って、途中で足さないのが結局いちばん楽です。

優先度と初回返信期限を数式で出す

K1に「優先度」と入れて、K2に次の数式を1つだけ貼ります。ARRAYFORMULAなので、これから届く回答にも自動で入ります。各行にコピーする必要はありません。

=ARRAYFORMULA(IF(A2:A="","",
  IF((G2:G="100万円以上")*(H2:H="1ヶ月以内")=1,"A",
  IF((G2:G="100万円以上")+(H2:H="1ヶ月以内")>0,"B","C"))))

G列が予算、H列が時期です。予算も時期も条件を満たせばA、どちらか一方ならB、どちらでもなければC。掛け算がAND、足し算がORの代わりです。判定の基準は自分の商売に合わせて書き換えてください。保守案件を取りたいなら区分(F列)を見る条件に変えるほうが実態に合います。

次にL1に「初回返信期限」と入れて、L2に貼ります。

=ARRAYFORMULA(IF(A2:A="","",
  INT(A2:A)+IF(WEEKDAY(A2:A,2)=5,3,IF(WEEKDAY(A2:A,2)=6,2,1))+TIME(12,0,0)))

受信日の翌営業日12時を期限にしています。WEEKDAY(値,2)は月曜が1、日曜が7です(出典:Google ドキュメント エディタ ヘルプ「WEEKDAY」、2026年10月1日確認)。金曜(5)なら3日後の月曜、土曜(6)なら2日後の月曜、日曜(7)とそれ以外は翌日。L列は表示形式を「日時」にしてください。

最後に、期限を過ぎた未対応を赤くします。A2:O列を選び、「表示形式 → 条件付き書式 → カスタム数式」に次を入れます。

=AND(OR($M2="",$M2="未対応"),$L2<>"",$L2<NOW())

M列が空(=まだ何も触っていない)か「未対応」で、期限を過ぎている行だけが赤くなります。開いた瞬間に、返し損ねているものが目に入る状態です。

M列にはプルダウンを設定します。M2:Mを選び、「データ → データの入力規則 → プルダウン」で、未対応/返信済/打ち合わせ待ち/見積提出/受注/失注の6つを入れておきます。手で打つと表記が揺れて、あとで集計できなくなります。

毎朝見るシートを1枚だけ作る

数式が入ったら、見るためのシートを別に作ります。こちらは読むだけで、書き込みません。書き込まなければ行がずれても壊れません。

新しいシート「未対応」を作り、A1に貼ります。

=QUERY('フォームの回答 1'!A2:O,
 "select A,B,F,G,H,K,L
  where A is not null and (M is null or M = '未対応')
  order by K, L
  label A '受信', B '会社', F '区分', G '予算', H '時期', K '優先', L '期限'", 0)

ステータスが空の行も拾うので、届いたばかりの問い合わせは何もしなくてもここに出ます。優先度A→B→C、同じ優先度なら期限の早い順に並びます。シート名が違う場合は'フォームの回答 1'を実際の名前に置き換えてください。

同じ要領で、あと2枚作ります。

シートwhereの条件見る頻度
未対応M is null or M = '未対応'毎朝
進行中M = '返信済' or M = '打ち合わせ待ち' or M = '見積提出'週1
集計下の集計用の数式月1

「進行中」は、返信したあと止まっている案件が溜まる場所です。ここが10件を超えて動かなくなったら、追いかけ方そのものを見直す合図になります。放置しない仕組みの作り方は見込み客の追客のやり方にまとめました。時期が「半年以内」「未定」で届いた問い合わせは、まさにここに入ります。

月に一度、どこから来た問い合わせが受注になったかを数える

「集計」シートのA1に貼ると、きっかけ別に結果の内訳が出ます。

=QUERY('フォームの回答 1'!A2:O,
 "select J, count(A) where A is not null group by J pivot O", 0)

J列(知ったきっかけ)で行を作り、O列(結果)で列を作ります。検索から来た問い合わせと紹介から来た問い合わせで、受注の数がどれだけ違うかが1枚で出ます。結果が未入力の行は見出しのない列にまとまるので、月初にO列の空欄を埋めてから見るときれいです。

1つの数字だけ見たいときはCOUNTIFSのほうが手早いです。

=COUNTIFS('フォームの回答 1'!J2:J,"紹介",'フォームの回答 1'!O2:O,"受注")

失注したものは、O列に「失注」と入れて終わりにせず、N列に一行だけ理由を書いてください。金額なのか、時期が合わなかったのか、返信が遅れたのか。この一行が溜まると失注分析ができるようになります。返信の遅れが並んでいたら、直すのはフォームでも見積もりでもなく、このシートを開く習慣のほうです。

優先度の高い問い合わせだけ通知する

Googleフォームには新しい回答をメールで知らせる設定があります(「回答」を開いて、その他アイコンから「新しい回答についてのメール通知を受け取る」。出典:Google ドキュメント エディタ ヘルプ「フォームの回答を表示、管理する」、2026年10月1日確認)。ただし、これは全件に届きます。予算が未定の相談も、100万円以上の相談も同じ通知です。毎回開いていると、そのうち開かなくなります。

優先度Aだけ飛ばすなら、Apps Scriptを10行ほど書きます。スプレッドシートの「拡張機能 → Apps Script」を開き、次を貼ります。

function notifyNewInquiry(e) {
  const v = e.namedValues;
  const pick = (k) => (v[k] ? String(v[k]).trim() : "");
  const budget = pick("概算のご予算");
  const timing = pick("ご希望の時期");
  if (budget !== "100万円以上" && timing !== "1ヶ月以内") return;
  MailApp.sendEmail({
    to: "you@example.com",
    subject: "【要対応】" + pick("会社名") + " から問い合わせ",
    body: [
      "区分: " + pick("ご依頼の区分"),
      "予算: " + budget,
      "時期: " + timing,
      "内容: " + pick("ご依頼内容"),
    ].join("\n"),
  });
}

貼ったら、左のメニューから「トリガー」を開いて「トリガーを追加」を押し、実行する関数にnotifyNewInquiry、イベントの種類に「フォーム送信時」を選んで保存します(出典:Google for Developers「インストール可能なトリガー」、2026年10月1日確認)。初回はGoogleアカウントの承認を求められます。e.namedValuesには質問名と回答が組で入るので(出典:Google for Developers「イベント オブジェクト」、2026年10月1日確認)、pick()に渡す文字列はフォームの質問文と完全に一致させてください。質問文を編集したら、ここも直す必要があります。

通知先をSlackにしたい場合はMailApp.sendEmailをUrlFetchApp.fetchでIncoming Webhookに投げる形に置き換えます。やっていることは変わりません。

この作りで足りなくなるとき

1人か2人で、問い合わせが月に十数件までなら、ここまでで十分回ります。足りなくなるのは次の3つが起きたときです。

  • 案件になったあとが続かない。受注と入れたところでシートは終わり、見積もり・発注・入金は別のファイルに移る。同じ会社の情報が2箇所に分かれる
  • 複数人で触ると誰が動いているか分からない。ステータスは進行の段階を表せても、担当を表せない。列を足すほど入力が増える
  • 同じ会社からの2回目の問い合わせに気づけない。過去の行を目で探すことになる

1つめが起きるのが一番早いので、受注後の管理を先に用意しておくと楽です。スプレッドシートで続けるなら案件管理のスプレッドシートテンプレートがそのまま接続先になります。問い合わせシートのO列が「受注」になった行を、案件シートに転記するだけです。

ここからは自社製品の紹介です。Pipeliaは、問い合わせから入った相手を営業リストに置いたまま、商談・受注・案件・外注・粗利まで同じ1本でつなぐ受託向けのSFAです。優先スコアと再連絡アラートは、上で作った優先度列と期限列がそのまま機能になったものだと思ってください。受注すると案件が自動で作られるので、転記の手間がなくなります。

Pipeliaの営業リスト画面。優先スコアと再連絡アラートが付いた見込み客が一覧になっている

無料プランでも営業リストは100件まで使えます。触って確かめたい場合は、登録不要のデモがそのまま開きます。

よくある質問

Googleフォームの問い合わせを担当者ごとに自動で振り分けられますか?

フォームの標準機能だけではできません。Apps ScriptのonFormSubmitトリガーの中で、依頼区分や予算に応じて通知先のメールアドレスを変えるか、ステータス列の隣に「担当」列を作ってスクリプトから書き込む形になります。数人のチームであれば、朝礼で未対応シートを見ながら口頭で割り振るほうが、スクリプトを保守するより早く済みます。

問い合わせフォームのスパムを減らすにはどうすればいいですか?

Googleフォームには「回答を1回に制限する」設定がありますが、これを有効にすると回答者にGoogleアカウントでのログインを求めることになり(出典:Google ドキュメント エディタ ヘルプ「フォームを公開して回答者と共有する」、2026年10月1日確認)、問い合わせ窓口としては現実的ではありません。現実的な対策は、選択式の必須項目を増やすこと、自由記述を必須にすること、そしてApps Script側で特定の語を含む回答にフラグを立てて通知から外すことです。ステータス列に「スパム」を1つ足しておくと、集計から除外できます。

回答シートを並べ替えたら、手で入れた列がずれてしまいました。戻せますか?

直後であれば Ctrl+Z(Macは Cmd+Z)で元に戻せます。時間が経っている場合は、右上の最終編集アイコンから変更履歴を開き、並べ替え前の版を選んで「この版を復元」で戻してください(出典:Google ドキュメント エディタ ヘルプ「ファイルの変更内容を確認する」、2026年10月1日確認)。以降は回答シートを直接並べ替えず、フィルタ表示を使うか、この記事のQUERYのように別シートで並べ替えた結果だけを見る形にすれば同じ事故は起きません。