MENU
  • HP制作 × MEO対策
  • システム開発
  • 制作実績
  • 会社概要
  • ブログ
Code Climb(コードクライム)
須賀川市のホームページ制作・システム開発
  • HP制作 × MEO対策
  • システム開発
  • 制作実績
  • 会社概要
  • ブログ
お問い合わせ
相談無料
須賀川市のホームページ制作・システム開発
  • HP制作 × MEO対策
  • システム開発
  • 制作実績
  • 会社概要
  • ブログ

Contact Form 7の問い合わせをGoogleスプレッドシートに自動保存する方法|初心者向け完全ガイド

2026 1/10
DX化 Web制作
2026-01-10

WordPressでホームページを作るとき、「お問い合わせフォーム」はほぼ必ず設置します。

ですが、こんな悩みはありませんか?

  • メールだけだと後から探すのが大変
  • 対応状況を管理できない
  • チームで共有しづらい
  • 問い合わせ履歴を分析できない
  • 「あの問い合わせ、返信したっけ?」と不安になる

私自身、医療機関SEとして14年間、さまざまなシステムの問い合わせ対応を見てきました。メールだけで管理しているチームは、必ずと言っていいほど「返信漏れ」や「二重対応」が発生していました。

そこでおすすめなのが、Contact Form 7の送信内容をGoogleスプレッドシートに自動で保存する仕組みです。

この記事を読めば、以下のことができるようになります:

  • フォーム送信と同時にスプレッドシートへ自動記録
  • 対応状況の管理(未対応・対応中・完了)
  • チームでのリアルタイム共有
  • 問い合わせ傾向の分析

プログラミングが苦手な方でも、コピペ中心で実装できます。 高校生でも理解できるレベルを目標に、仕組みから実装まで丁寧に解説します。

目次

この仕組みで実現できること

実装前に、この仕組みを導入すると何が変わるのかを具体的に見てみましょう。

Before:メール管理の問題点

項目状況
保存場所担当者の個人メールボックス
検索性探すのに時間がかかる
共有転送しないと他の人が見れない
対応管理誰が対応したか分からない
分析ほぼ不可能

After:スプレッドシート管理のメリット

項目状況
保存場所全員がアクセスできるスプレッドシート
検索性フィルタ・検索で一瞬
共有リアルタイムで全員が閲覧可能
対応管理「対応ステータス」列で一目瞭然
分析グラフ化・集計が簡単

私がクライアントにこの仕組みを提案したとき、「これでやっと問い合わせ管理がまともになる」と言われました。特に複数人で対応するチームには効果絶大です。


全体の仕組みをざっくり理解しよう

まずは難しいことを考えず、流れだけ見てください。

STEP
お客様がフォームを送信
STEP
WordPressが内容を受け取る
STEP
PHPがGASのURLにデータを送信
STEP
GASがスプレッドシートに自動保存

やっていることはとてもシンプルです。「フォームに書かれた内容を、別の場所(スプレッドシート)にコピーする」だけです。

今回使うもの

名前役割費用
Contact Form 7お問い合わせフォーム無料
Googleスプレッドシート問い合わせの保存先無料
Google Apps Script(GAS)データを受け取ってシートに書く係無料
少しだけPHP(WordPress側)フォーム送信時にGASへ送る役目無料

👉 全部無料で使えます。


事前準備:必要なもの

実装を始める前に、以下が揃っていることを確認してください。

必須

  •  WordPressサイト(管理者権限でログイン可能)
  •  Contact Form 7がインストール・有効化済み
  •  Googleアカウント(Gmail)

あると便利

  •  子テーマ(functions.phpを編集するため)
  •  FTPクライアント or ファイルマネージャーへのアクセス

👉 子テーマがない場合:テーマ更新時にコードが消えるリスクがあります。可能であれば子テーマを用意してください。


ステップ①:スプレッドシートを用意する

まずは、問い合わせを保存する「箱」を作ります。

1-1. 新規スプレッドシートを作成

  1. Googleドライブにアクセス
  2. 「新規」→「Googleスプレッドシート」をクリック
  3. ファイル名を「お問い合わせ管理」などに変更

1-2. 1行目に列名を入力

シートの1行目に、以下のような列名を入力します。

お問い合わせフォーム用の例:

A列B列C列D列E列F列G列
受信日時お名前メール電話会社名種別内容

無料相談フォーム用の例:

A列B列C列D列E列
受信日時お名前メール会社名相談内容

👉 列名は日本語でOKです。 あとから見て分かることが大切です。

1-3. スプレッドシートIDをメモする

ブラウザのURLを見てください。以下のような形式になっています。

https://docs.google.com/spreadsheets/d/【ここがスプレッドシートID】/edit

このスプレッドシートID(英数字の長い文字列)を、後で使うのでメモしておいてください。


ステップ②:Google Apps Script(GAS)を作成する

次に、データを受け取ってシートに書き込む係を作ります。

2-1. Apps Scriptエディタを開く

  1. スプレッドシートを開いた状態で
  2. 上のメニュー「拡張機能」→「Apps Script」をクリック

2-2. コードを貼り付ける

表示されたエディタに、以下のコードを全て貼り付けてください。

/**
 * Contact Form 7からのデータを受け取り、スプレッドシートに記録する
 *
 * 【設定手順】
 * 1. SPREADSHEET_ID に自分のスプレッドシートIDを入力
 * 2. SHEET_NAME にシート名を入力(デフォルトは「シート1」)
 */

// ===== 設定項目(ここを自分の環境に合わせて変更) =====
const SPREADSHEET_ID = 'ここにスプレッドシートIDを貼り付け';
const SHEET_NAME = 'シート1';  // シート名(タブの名前)
// =====================================================

/**
 * POSTリクエストを受け取る関数
 * WordPressからデータが送られてくると、この関数が実行される
 */
function doPost(e) {
  try {
    // 送られてきたデータを取得
    const params = e.parameter;

    // スプレッドシートを開く
    const spreadsheet = SpreadsheetApp.openById(SPREADSHEET_ID);
    const sheet = spreadsheet.getSheetByName(SHEET_NAME);

    // シートが見つからない場合はエラー
    if (!sheet) {
      return createResponse('error', 'シートが見つかりません: ' + SHEET_NAME);
    }

    // 1行目(ヘッダー)を取得
    const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];

    // 新しい行に書き込むデータを準備
    const newRow = [];

    for (let i = 0; i < headers.length; i++) {
      const header = headers[i];

      if (header === '受信日時') {
        // 受信日時は現在時刻を自動で入力
        newRow.push(new Date());
      } else {
        // それ以外は送られてきたデータから取得
        // ヘッダー名をキーとしてデータを探す
        newRow.push(params[header] || '');
      }
    }

    // 最終行の次に新しいデータを追加
    sheet.appendRow(newRow);

    // 成功レスポンスを返す
    return createResponse('success', 'データを保存しました');

  } catch (error) {
    // エラーが発生した場合
    return createResponse('error', error.toString());
  }
}

/**
 * レスポンスを作成する関数
 */
function createResponse(status, message) {
  return ContentService
    .createTextOutput(JSON.stringify({
      status: status,
      message: message
    }))
    .setMimeType(ContentService.MimeType.JSON);
}

/**
 * GETリクエスト用(動作確認用)
 */
function doGet(e) {
  return createResponse('success', 'GASは正常に動作しています');
}

2-3. スプレッドシートIDを設定する

コードの上部にある以下の行を見つけてください。

const SPREADSHEET_ID = 'ここにスプレッドシートIDを貼り付け';

ステップ①でメモしたスプレッドシートIDをここに貼り付けます。

const SPREADSHEET_ID = '1abc2defg3hijklmn4opqrst5uvwxyz';  // 例

👉 シングルクォート(’)で囲むのを忘れずに!

2-4. 保存する

  1. 上部の「💾」アイコン、または Ctrl + S(Mac: Cmd + S)で保存
  2. プロジェクト名を入力(例:「お問い合わせ連携」)

ステップ③:GASをWebアプリとして公開する

GASはそのままだと外部から使えません。Webアプリとして公開することで、WordPressからアクセスできるようになります。

3-1. デプロイ画面を開く

  1. 右上の「デプロイ」ボタンをクリック
  2. 「新しいデプロイ」を選択

3-2. 種類を選択

  1. 「種類の選択」の歯車アイコンをクリック
  2. 「ウェブアプリ」を選択

3-3. 設定を行う(👉 ここが超重要)

以下の設定を必ず行ってください。

項目設定値
説明(任意)「お問い合わせ連携」など
次のユーザーとして実行自分
アクセスできるユーザー全員

⚠️ 「アクセスできるユーザー」を「全員」にしないと、WordPressからアクセスできません。

3-4. 認証を許可する

初回デプロイ時は、Googleアカウントへのアクセス許可を求められます。

  1. 「アクセスを承認」をクリック
  2. 自分のGoogleアカウントを選択
  3. 「詳細」→「〇〇(安全ではないページ)に移動」をクリック
  4. 「許可」をクリック

👉 「安全ではない」という警告が出ますが、これは自分で作ったスクリプトなので問題ありません。

3-5. WebアプリのURLをメモする

デプロイが完了すると、以下のようなURLが表示されます。

https://script.google.com/macros/s/【長い文字列】/exec

このWebアプリURLを、後で使うのでメモしておいてください。


ステップ④:WordPress側で送信処理を書く

いよいよ最後のステップです。WordPressがフォーム送信時にGASへデータを送るようにします。

4-1. Contact Form 7のフォームIDを確認する

WordPress管理画面で「お問い合わせ」→「コンタクトフォーム」を開きます。

使用するフォームをクリックして、URLを確認してください。

https://あなたのサイト/wp-admin/admin.php?page=wpcf7&post=1602&action=edit
                                                    ↑
                                              ここの数字がフォームID

この例では 1602 がフォームIDです。

⚠️ ここでよくある間違い:ショートコードのIDは使えません

エラー: コンタクトフォームが見つかりません。

↑ これは見た目用IDなので、PHPでは使えません!

4-2. functions.phpにコードを追加する

子テーマの functions.php に、以下のコードを追加します。

<?php
/**
 * Contact Form 7 → Googleスプレッドシート連携
 *
 * 【設定手順】
 * 1. $gas_url に自分のGAS WebアプリURLを入力
 * 2. $form_id に自分のフォームIDを入力
 * 3. $fields 配列を自分のフォームに合わせて編集
 */

// フォーム送信後に実行されるフック
add_action('wpcf7_mail_sent', 'send_cf7_to_spreadsheet');

function send_cf7_to_spreadsheet($contact_form) {

    // ===== 設定項目(ここを自分の環境に合わせて変更) =====

    // GASのWebアプリURL
    $gas_url = 'https://script.google.com/macros/s/あなたのGAS_URL/exec';

    // 連携するフォームのID(複数フォームがある場合は配列で指定)
    $form_id = 1602;  // ここを自分のフォームIDに変更

    // =========================================================

    // このフォームが対象かチェック
    if ($contact_form->id() != $form_id) {
        return;
    }

    // フォームの送信データを取得
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) {
        return;
    }

    $posted_data = $submission->get_posted_data();

    // スプレッドシートに送るデータを準備
    // キー名はスプレッドシートの1行目(ヘッダー)と一致させる
    $data = array(
        'お名前'   => isset($posted_data['your-name']) ? $posted_data['your-name'] : '',
        'メール'   => isset($posted_data['your-email']) ? $posted_data['your-email'] : '',
        '電話'     => isset($posted_data['your-tel']) ? $posted_data['your-tel'] : '',
        '会社名'   => isset($posted_data['your-company']) ? $posted_data['your-company'] : '',
        '種別'     => isset($posted_data['your-subject']) ? $posted_data['your-subject'] : '',
        '内容'     => isset($posted_data['your-message']) ? $posted_data['your-message'] : '',
    );

    // GASにデータを送信
    $response = wp_remote_post($gas_url, array(
        'method'    => 'POST',
        'timeout'   => 30,
        'body'      => $data,
    ));

    // エラーログ(デバッグ用・本番では削除可)
    if (is_wp_error($response)) {
        error_log('GAS送信エラー: ' . $response->get_error_message());
    }
}

4-3. 自分のフォームに合わせて編集する

上記コードで変更が必要な箇所:

1. GASのWebアプリURL

$gas_url = 'https://script.google.com/macros/s/あなたのGAS_URL/exec';

ステップ③でメモしたURLに置き換えてください。

2. フォームID

$form_id = 1602;  // ここを自分のフォームIDに変更

ステップ④-1で確認したIDに置き換えてください。

3. フィールドの対応付け

$data = array(
    'お名前'   => isset($posted_data['your-name']) ? $posted_data['your-name'] : '',
    // ...
);

左側('お名前')はスプレッドシートの列名、右側('your-name')はContact Form 7のフィールド名です。

Contact Form 7のフォーム編集画面で、各フィールドの名前を確認してください。

[text* your-name]  ← この「your-name」がフィールド名

動作確認とトラブルシューティング

動作確認の手順

  1. フォームのあるページを開く
  2. テスト送信する(「テスト」など分かりやすい内容で)
  3. スプレッドシートを確認する
  4. 新しい行にデータが追加されていれば成功!

よくあるエラーと対処法

❌ スプレッドシートに何も追加されない

  •  GASのスプレッドシートIDは正しいか
  •  GASのシート名は正しいか(「シート1」など)
  •  GASのデプロイ設定で「アクセス:全員」になっているか
  •  PHPのGAS URLは正しいか
  •  PHPのフォームIDは正しいか

❌ 一部の列だけ空になる

  •  スプレッドシートの列名とPHPの$data配列のキー名が一致しているか
  •  Contact Form 7のフィールド名が正しいか

❌ WordPressがエラーになる

  •  PHPの構文エラーがないか
  •  <?php タグの重複がないか

👉 エラーログを確認する方法:wp-content/debug.log にエラーが記録されます。


なぜこの方法を選んだのか(技術選定の理由)

「Contact Form 7とスプレッドシートを連携する方法」は他にもあります。なぜ私がこの方法を選んだのか、技術選定の判断軸を共有します。

他の選択肢との比較

方法メリットデメリット
今回の方法(GAS + PHP)安定・拡張しやすい設定にやや手間がかかる
プラグイン「CF7 to Spreadsheet」簡単に設定できるプラグイン依存・更新停止リスク
Googleフォーム埋め込み設定が最も簡単デザインの自由度が低い
Zapier連携ノーコードで連携月額費用がかかる

拡張性

私がこの方法を選んだ最大の理由は拡張性です。

GASを中継することで、将来的に以下のような機能を追加できます:

  • Slack通知(問い合わせが来たらチームに通知)
  • 対応ステータス管理(未対応・対応中・完了)
  • 自動返信ログ(いつ返信したかを記録)
  • データ分析(問い合わせ傾向のグラフ化)

プラグインに依存すると、こうした拡張が難しくなります。

保守性

医療機関SEとして14年間、「システムが止まったら業務が止まる」環境を支えてきました。その経験から、運用しやすさを最優先しています。

今回の方法は:

  • GASもPHPも一般的な技術なので、私がいなくなっても保守可能
  • プラグインの更新停止リスクがない
  • Googleのインフラを使うので安定している

コスト

すべて無料で使えます。

  • Contact Form 7:無料
  • Googleスプレッドシート:無料
  • Google Apps Script:無料
  • WordPress:無料(ホスティング費用は別途)

Zapierなどの連携サービスは月額費用がかかりますが、この方法ならランニングコストゼロで運用できます。


よくある質問

プログラミング初心者でもできますか?

できます。 

この記事のコードは、コピペで構築できます。変更が必要な箇所(URL、ID、フィールド名)を自分の環境に合わせるだけです。

無料ですか?

はい、無料です。

WordPress、Contact Form 7、Googleスプレッドシート、GASすべて無料で使えます。

データは安全ですか?

Googleアカウント内に保存されるので、Excel添付メールより安全です。

アクセス権限はスプレッドシートの共有設定で細かく管理できます。

複数のフォームに対応できますか?

できます。

PHPコードの$form_idを配列にするか、フォームごとにif文を追加してください。GAS側は1つでOKです。

フォームの項目を増やしたらどうすればいい?

スプレッドシートに列を追加し、PHPの$data配列に項目を追加してください。GAS側は自動で対応します(ヘッダー名をキーにしているため)。


まとめ

この記事では、Contact Form 7の問い合わせをGoogleスプレッドシートに自動保存する方法を解説しました。

この記事のポイント

  1. 全体の流れ:フォーム送信 → WordPress → GAS → スプレッドシート
  2. GASの役割:データを受け取ってシートに書き込む
  3. PHPの役割:フォーム送信時にGASへデータを送る
  4. フォームIDの注意:ショートコードのIDではなく、管理画面URLの数字を使う
  5. 拡張性:Slack通知や対応ステータス管理も後から追加可能

この仕組みを導入すると

  • 問い合わせ管理が楽になる
  • チーム共有がしやすくなる
  • 業務効率が大きく上がる

「フォームは作ったけど、その後が大変」という方に、特におすすめの仕組みです。

まずはテスト環境で試してみてください。 一度動いてしまえば、あとは自動で記録されていきます。


この技術を使った業務改善・システム開発のご相談

「自社でも導入できるか相談したい」
「もっと詳しく話を聞きたい」
「Slack通知や対応ステータス管理も追加したい」

という方は、お気軽にご相談ください。

私は医療機関SEとして14年間、現場のシステム改善に携わってきました。「作って終わり」ではなく、運用まで見据えた仕組みづくりをお手伝いします。

お問い合わせはこちら

※ 無理な売り込みは一切しません。まずはお話を聞かせてください。

DX化 Web制作
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • 須賀川市でMEO対策を始めるなら今|Googleマップ集客で売上を伸ばす具体的方法

この記事を書いた人

toshihideのアバター toshihide

関連記事

  • 須賀川でWeb制作を依頼する前に読む|失敗しない進め方と成功のポイント【2026年完全ガイド】
    2026-01-06
  • 須賀川市の建設業が人手不足を解決する方法|求人応募を増やすWeb採用戦略
    2026-01-05
  • 須賀川市のホームページ制作会社5選|失敗しない選び方を地元Web事業者が徹底解説【2026年最新】
    2026-01-03
  • 須賀川でホームページ制作に強い!Googleマップ連携で店舗情報を魅力的に見せるWordPressカスタマイズ
    2025-12-25
  • 【画像付きステップで解説】共有されたAppSheetアプリを自分のアカウントにコピーする方法|テンプレート活用・納品アプリの受け取り方
    2025-12-25
  • 【Windows】Git Bashインストール完全版!ダウンロードからインストール確認まで徹底解説
    2025-12-18
  • 【Windows】GitHubのSSH接続で挫折しない!Git Bashを使った設定手順を完全図解
    2025-12-18
  • Googleアカウント2段階認証の解除方法と必要なケース
    2025-05-10
新着記事
  • Contact Form 7の問い合わせをGoogleスプレッドシートに自動保存する方法|初心者向け完全ガイド
  • 須賀川市でMEO対策を始めるなら今|Googleマップ集客で売上を伸ばす具体的方法
    須賀川市でMEO対策を始めるなら今|Googleマップ集客で売上を伸ばす具体的方法
  • 須賀川でWeb制作を依頼する前に読む|失敗しない進め方と成功のポイント【2026年完全ガイド】
人気記事
  • Googleアカウント2段階認証の解除方法と必要なケース
    2025-05-10
  • WordPress Wix Jimdo Shopify徹底比較 あなたのビジネスに最適なホームページ作成ツールはどれ? 機能 費用 使いやすさで選ぶCMSガイド
    2025-05-01
  • サイト制作に役立つツールを完全ガイド
    2025-01-18
  • reCAPTCHA2とreCAPTCHA3の違いをわかりやすく解説!どちらを使うべきか迷ったら
    2024-11-30
  • reCAPTCHAを導入する理由を簡単に解説!セキュリティと使いやすさを両立するための大事なポイント
    2024-11-30

まずは、無料でご相談ください

「何から始めればいいか分からない」という状態でも大丈夫です。
売り込みは行いません。ITが苦手な方も安心してお話しください。

無料相談ページへ
お問い合わせ
  1. ホーム
  2. DX化
  3. Contact Form 7の問い合わせをGoogleスプレッドシートに自動保存する方法|初心者向け完全ガイド
  • ホーム
  • ホームページ制作 × MEO対策
  • システム開発
  • 会社概要
  • 制作実績
  • ブログ
  • 無料相談
  • お問い合わせ
  • サイトマップ
  • プライバシーポリシー
  • 特定商取引法に基づく表記
  • 無料相談
  • お問い合わせ

© Code Climb

目次