【完全保存版】自作HTMLフォームをGoogleフォームに連携し自動返信まで実現する方法|確認画面+GAS活用でプロレベルのフォーム運用を実践

はじめに|なぜ「自作フォーム+Googleフォーム連携」が今おすすめなのか?

企業サイトやLP、キャンペーンページなどで必須となるお問い合わせフォーム

多くの企業が以下の悩みを抱えています。

  • ✅ フォームを作りたいがサーバー側のバックエンド開発ができない
  • ✅ できればスプレッドシートで回答管理したい
  • ✅ 確認画面・自動返信などユーザー体験も強化したい
  • ✅ セキュアに低コストで実現したい

👉 この全てを解決できるのが「自作HTML+Googleフォーム+Google Apps Script(GAS)」の連携構成です。

本記事では、完全実務レベルで**「入力 → 確認 → 完了」** の3ステップを実装し、さらにGASで自動返信まで行う手順を初心者〜実務エンジニア向けにわかりやすく解説します。


本記事で学べること

  • ✅ HTMLで自由なレイアウトのフォームを作成する
  • ✅ JavaScriptで確認画面(dl, dt, dd)を生成する
  • ✅ GoogleフォームにPOSTで安全にデータ送信する
  • ✅ GAS(Google Apps Script)で自動返信メールを送信する
  • ✅ 実務の運用で注意すべきセキュリティやUXのポイント

👉 この記事を保存してテンプレート化すれば、今後のフォーム開発が一気に効率化します!

全体構成図

ユーザー入力 (index.html)
↓
確認画面 (confirm.html)
↓
Googleフォームへ送信
↓
自動返信メール (GAS)
↓
完了画面 (complete.html)
↓
スプレッドシートに自動記録

1. 入力画面(index.html)を作成

HTML5の基本フォームを使います。ここではPOSTで確認画面に渡す設計です。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>お問い合わせフォーム</title>
</head>
<body>
  <h1>お問い合わせフォーム</h1>
  <form action="confirm.html" method="post">
    <label>お名前<br>
      <input type="text" name="name" required>
    </label><br>

    <label>メールアドレス<br>
      <input type="email" name="email" required>
    </label><br>

    <label>お問い合わせ内容<br>
      <textarea name="message" required></textarea>
    </label><br>

    <button type="submit">内容を確認する</button>
  </form>
</body>
</html>

ポイント

  • バリデーションはrequired属性で最低限のエラーチェック
  • この段階ではまだGoogleフォームには送信しません

2. 確認画面(confirm.html)の作成

確認画面はユーザー体験に大きく貢献します。

ここでは**dl, dt, ddタグを使い可読性の高い構成**にします。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>確認画面</title>
</head>
<body>
  <h1>ご入力内容の確認</h1>
  <dl id="confirm-list"></dl>

  <form id="back-form">
    <button type="button" id="back">戻る</button>
  </form>

  <form id="submit-form" action="https://docs.google.com/forms/d/e/YOUR_FORM_ID/formResponse" method="post">
    <!-- Googleフォームのentryに合わせる -->
    <input type="hidden" name="entry.123456" id="entry-name">
    <input type="hidden" name="entry.789012" id="entry-email">
    <input type="hidden" name="entry.345678" id="entry-message">
    <button type="submit">送信する</button>
  </form>

  <script src="js/form.js"></script>
</body>
</html>

確認画面用のform.js

window.addEventListener('DOMContentLoaded', () => {
  const params = new URLSearchParams(history.state || new FormData(document.forms[0]));
  const fields = [
    { key: 'name', label: 'お名前' },
    { key: 'email', label: 'メールアドレス' },
    { key: 'message', label: 'お問い合わせ内容' }
  ];
  const list = document.getElementById('confirm-list');

  fields.forEach(f => {
    const dt = document.createElement('dt');
    dt.textContent = f.label;
    const dd = document.createElement('dd');
    dd.textContent = params.get(f.key);
    list.appendChild(dt);
    list.appendChild(dd);
    document.getElementById(`entry-${f.key}`).value = params.get(f.key);
  });

  document.getElementById('back').addEventListener('click', () => history.back());
});

👉 確認画面があると入力ミスによるクレーム防止に非常に効果的です。


3. 完了画面(complete.html)

送信完了後のユーザー安心感の演出も大切です。

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>送信完了</title>
</head>
<body>
  <h1>送信が完了しました</h1>
  <p>お問い合わせありがとうございました。自動返信メールをご確認ください。</p>
</body>
</html>

👉 フォーム送信後、Googleフォームの設定でリダイレクトURLを指定し、complete.htmlに誘導します。


4. Googleフォームの準備

  1. Googleフォームを作成し、項目(お名前・メールアドレス・お問い合わせ内容)を用意
  2. フォームURLの /forms/d/e/FORM_ID/viewform から FORM_ID を取得
  3. 各項目に対応する entry.XXXXXX のIDを調べる(Chromeの開発者ツールを使用)
  4. 確認画面のhidden項目に正しいentryIDを埋め込む

5. Google Apps Script(GAS)で自動返信メール設定

GASコード

function onFormSubmit(e) {
  const responses = e.namedValues;
  const email = responses['メールアドレス'][0];
  const name  = responses['お名前'][0];
  const message = responses['お問い合わせ内容'][0];

  const subject = '【自動返信】お問い合わせありがとうございます';
  const body =
    `${name} 様\n\n` +
    `お問い合わせありがとうございます。以下の内容で受け付けました。\n\n` +
    `【お問い合わせ内容】\n${message}\n\n` +
    `---------------------------------\n` +
    `〇〇株式会社\n` +
    `https://example.com/`;

  MailApp.sendEmail(email, subject, body);
}

設定手順

  1. Googleフォームの「回答先」スプレッドシートを開く
  2. メニュー「拡張機能 → Apps Script」で新規スクリプト作成
  3. 上記コードを貼り付け
  4. トリガー設定:onFormSubmit を「フォーム送信時」に紐づけ
  5. 初回はGoogleから権限承認を求められる(承認必須)

6. 動作確認フロー

  1. index.html → 入力
  2. confirm.html → 内容確認
  3. GoogleフォームにPOST送信
  4. complete.html → 完了メッセージ表示
  5. 入力したメールに自動返信が届く
  6. スプレッドシートに回答が自動蓄積

👉 実際の商用サイトでもこの構成は非常に安定しています。


7. 実務ノウハウ&注意点まとめ

課題解決策
タイムゾーンの不一致Googleフォームは基本JST。クライアントの日時依存を最小限にする
entryIDずれChrome開発者ツールのフォーム要素検証でID確認
GAS権限承認個人アカウントではなくGoogle Workspace運用がおすすめ
確認画面の入力保持localStorageやsessionStorageで実装可能
スパム対策reCAPTCHA v3の併用推奨

まとめ|自作フォーム+Googleフォーム+GASは現場で超使える構成

  • ✅ バックエンド開発不要でも高機能フォーム運用が可能
  • ✅ Googleスプレッドシートで回答管理も簡単
  • ✅ 自動返信でユーザー満足度向上
  • ✅ 実務現場でも安定稼働中の実践的手法

特に中小企業・LP制作・サーバーレス運用現場での導入実績が非常に多い構成です。

(Visited 3 times, 1 visits today)