注文フォームに入力された内容を、Googleフォーム(=Googleスプレッドシート)へ自動で流し込むための設定手順です。 パソコンでの作業を推奨します。所要時間はおよそ20〜30分です。
Googleフォームを新規作成する
- Googleアカウントでログインした状態で
forms.google.comを開きます。 - 「空白のフォーム」(+のアイコン)をクリックします。
- タイトルを「第8回きなんせカップ 記念Tシャツ注文」など分かりやすい名前に変更します。
質問を17個つくる
下の表のとおり、上から順番に17個の質問を作成します。
質問の形式は必ず 「記述式」(注文明細だけ「段落」)にしてください。
プルダウンやラジオボタンにすると、送られてきた値が弾かれて記録されません。
| No. | 質問のタイトル | 形式 |
|---|---|---|
| 1 | 注文番号 | 記述式 |
| 2 | 区分 | 記述式 |
| 3 | チーム名 | 記述式 |
| 4 | ご担当者氏名 | 記述式 |
| 5 | フリガナ | 記述式 |
| 6 | 電話番号 | 記述式 |
| 7 | メールアドレス ※「メールアドレスを収集する」機能は使わず、通常の質問として作成 | 記述式 |
| 8 | 郵便番号 | 記述式 |
| 9 | お届け先住所 | 記述式 |
| 10 | 受取方法 | 記述式 |
| 11 | お支払方法 | 記述式 |
| 12 | 注文明細 | 段落 |
| 13 | 合計枚数 | 記述式 |
| 14 | 商品小計 | 記述式 |
| 15 | 送料 | 記述式 |
| 16 | ご請求金額 | 記述式 |
| 17 | 備考 | 段落 |
・質問の「必須」スイッチは すべてオフ にしてください。オンだと、フリガナや備考が空欄のときにエラーで記録されません。
・「回答の検証」も設定しないでください(数字のみ等の制限があると弾かれます)。
・No.7「メールアドレス」は必ず通常の質問として作成してください。 設定の「メールアドレスを収集する」機能は使えません(理由は手順8)。
回答をスプレッドシートに保存する設定
- フォーム上部の「回答」タブをクリックします。
- 緑色のスプレッドシートのアイコン(「スプレッドシートにリンク」)をクリックします。
- 「新しいスプレッドシートを作成」を選び、作成します。
これで、注文が入るたびにスプレッドシートへ1行ずつ自動で追加されるようになります。
送信先URL(Action URL)を調べる
Googleフォームには「編集用URL」と「公開用URL」があり、 回答を受け付けられるのは公開用URLだけです。
間違えて編集用URLを使うと、送信しても回答が1件も記録されません (画面には「送信完了」と出てしまいます)。
| 種類 | URLの形 | 判定 |
|---|---|---|
| 編集用 | /forms/d/19ENt26.../formResponse |
× 使えない |
| 公開用 | /forms/d/e/1FAIpQLS○○○/formResponse |
○ こちらを使う |
見分け方はかんたんです。/d/ のうしろに e/ があり、IDが 1FAIpQLS で始まっていれば公開用です。
ブラウザのアドレス欄に出ているURL(編集画面のURL)は編集用なので、そのまま使ってはいけません。
公開用URLの正しい取得手順
- フォーム編集画面の右上にある 「送信」ボタン をクリックします。
- 「送信方法」の中の リンクのアイコン(🔗) のタブを選びます。
- 表示されたURLをコピーします。(「URLを短縮」のチェックは外してください)
https://docs.google.com/forms/d/e/1FAIpQLSd○○○○○○○○○○/viewform?usp=sf_link
このURLから ?usp=sf_link 以降を削除し、
末尾の /viewform を /formResponse に書き換えたもの が、設定で使うURLです。
https://docs.google.com/forms/d/e/1FAIpQLSd○○○○○○○○○○/formResponse
※ /viewform のままだと送信できません。必ず書き換えてください。
各質問の「entry ID」を調べる
Googleフォームは、質問ごとに entry.123456789 のような番号を持っています。
どの入力欄がどの質問なのかを対応づけるために、この17個の番号を調べます。
かんたんな調べ方(Chrome推奨)
- 手順4で開いた プレビュー画面 を表示します。
- 1つめの質問「注文番号」の 入力欄の上で右クリック →「検証」を選びます。
- 画面の右(または下)にコードが表示され、青くハイライトされた行の中に
name="entry.123456789"のような記述があります。このentry.123456789をメモします。 - 同じ操作を、17個すべての質問について繰り返します。
まとめて調べる方法
- プレビュー画面で何もない場所を右クリック →「ページのソースを表示」。
- Ctrl+F(Macは ⌘+F)で
entry.と検索。 - 質問の順番どおりに番号が並んでいるので、上から順にメモします。
例)注文番号 → entry.1234567 / 区分 → entry.7654321 …
設定ファイルに貼り付ける
サイトのファイル js/gform-config.js を開き、次の2か所を書き換えます。
(編集するのはこのファイルだけです)
window.GFORM_CONFIG = {
FORM_ACTION_URL: 'ここに手順4のURL(/formResponseで終わるもの)',
ENTRY_IDS: {
order_no: 'entry.1111111', // 注文番号
category: 'entry.2222222', // 区分
team_name: 'entry.3333333', // チーム名
contact_name: 'entry.4444444', // ご担当者氏名
contact_kana: 'entry.5555555', // フリガナ
phone: 'entry.6666666', // 電話番号
email: 'entry.7777777', // メールアドレス
postal_code: 'entry.8888888', // 郵便番号
address: 'entry.9999999', // お届け先住所
delivery_method: 'entry.1010101', // 受取方法
payment_method: 'entry.1111112', // お支払方法
items_summary: 'entry.1212121', // 注文明細
quantity: 'entry.1313131', // 合計枚数
subtotal: 'entry.1414141', // 商品小計
shipping_fee: 'entry.1515151', // 送料
total: 'entry.1616161', // ご請求金額
note: 'entry.1717171' // 備考
},
COLLECT_EMAIL: false, // 必ず false(手順8を参照)
ALSO_SAVE_TO_TABLE: false // 外部サーバー設置時は false
};
・番号は シングルクォート
' で囲んだままにしてください。・行末の カンマ
, を消さないでください(最後の note の行だけカンマなし)。・
// から後ろはメモ書きなので、消しても残してもかまいません。
テスト送信して確認する
- サイトを公開(Publishタブ)し、注文フォームを開きます。
- フォーム上部のオレンジ色の警告が消えていることを確認します。(残っている場合はURLの設定ミスです)
- チーム名を「テスト」などにして、1件送信してみます。
- 手順3で作ったスプレッドシートを開き、1行追加されているかを確認します。
- 各列に正しい値が入っているかチェックします。ズレている場合は entry番号の対応が入れ違っています。
- 確認できたら、テスト行をスプレッドシートから削除して完了です。
Googleフォームの仕様上、サイト側では送信の成功・失敗を判定できません。 画面には常に「送信完了」と表示されるため、実際に記録されているかはスプレッドシートでの確認が必須です。
メールアドレスの収集設定について(重要)
実機検証の結果、Googleフォームのメール収集機能は、このサイトのような 外部サイトからの直接送信とは併用できないことが判明しています。
有効にすると Google 側が送信を拒否し(HTTP 400)、 「There was a problem submitting your response」となって 注文が1件も記録されません。
正しい設定(現在の運用)
| 設定項目 | 正しい値 |
|---|---|
| メールアドレスを収集する | 収集しない |
| 回答のコピーを回答者に送信 | オフ(選択不可でOK) |
| 回答を1回に制限する | オフ |
| 回答の編集を許可する | オフ |
| メールアドレスの取得方法 | 通常の質問(記述式)として作成 |
メールアドレスは、手順2の表のとおり 7番目の通常の質問「メールアドレス」(記述式・必須オフ) として収集します。この方式なら問題なく記録されます。
email: 'entry.1539694476', // 通常の質問として送信
COLLECT_EMAIL: false, // ← 必ず false のままにする
(任意)自動返信メールを送りたい場合
上記のとおり Googleフォーム標準の「回答のコピーを回答者に送信」は使えませんが、 スプレッドシートの Apps Script を使えば自動返信メールを実現できます。 こちらは文面を自由に作れるため、標準機能より丁寧な案内が送れます。
コピー&ペーストで動くスクリプトと専用の手順書をご用意できます。
注文の受付を止めずに後から追加できますので、 まずは手順7のテスト送信で注文が確実に記録される状態を作ってから ご検討いただくのがおすすめです。
うまくいかないときは
- スプレッドシートに何も追加されない
-
まずURLの形を確認してください。原因の大半はこれです。
①/forms/d/のうしろにe/があり、IDが1FAIpQLSで始まっていますか? ついていない場合は「編集用URL」です。手順4のとおり「送信」→リンク(🔗)から公開用URLを取り直してください。
② 末尾が/formResponseになっていますか?(/viewformのままでは送信されません)
③ フォームが「回答を受付中」になっていますか?(回答タブの「回答を受け付けている」がオン)
④ 「メールアドレスを収集する」を 「確認済み」 にしていませんか? 必ず 「回答者による入力」 にしてください(手順8)。 - 一部の列だけ空になる
- その質問の entry番号が違っているか、Googleフォーム側でその質問が「必須」または「回答の検証」ありになっています。両方オフにしてください。
- 列の中身が入れ違っている
- entry番号の割り当てミスです。手順5をやり直し、質問名と番号の対応を確認してください。
- オレンジ色の警告が消えない
FORM_ACTION_URLが空か、/formResponseが含まれていません。もう一度貼り直してください。- 「There was a problem submitting your response」と出て記録されない
-
「メールアドレスを収集する」が有効(回答者による入力/確認済み)になっています。
「収集しない」に戻してください。
あわせて
js/gform-config.jsのCOLLECT_EMAILをfalseにします(手順8)。 - 「Some questions still need attention」と出る
- 必須設定された項目に値が届いていません。フォーム側の各質問の「必須」をすべてオフにしてください。 メール収集を有効にしている場合も、この表示が出ることがあります。
- 質問を作り直したら記録されなくなった
-
質問を削除して作り直すと entry ID が変わります。
古いIDを送ると存在しない項目としてGoogleに拒否され、注文全体が失われます。
手順5でIDを調べ直し、
js/gform-config.jsを更新してください。 - 質問を後から増やしたい
- Googleフォームに質問を追加しても、既存の entry番号は変わりません。追加分の番号を調べて設定ファイルに足してください。
Googleフォームの「回答」タブ → 右上の3点メニュー →「新しい回答についてのメール通知を受け取る」をオンにすると、 注文が入るたびにメールでお知らせが届きます。締切前の確認漏れ防止におすすめです。