Pro Feature
Contact Form 7 の送信をGoogleスプレッドシートに自動保存する方法
Contact Form 7(CF7)のフォーム送信をGoogleスプレッドシートへ自動で行追加・保存する方法を解説。コード不要で設定画面だけで完結させる方法と、Google Apps Scriptを使う手動実装を、つまずきやすい点付きで紹介。
問い合わせ内容を集計・共有したいなら、Contact Form 7(CF7)の送信をGoogleスプレッドシートへ自動保存するのが手軽です。
送信のたびに行が追加され、そのまま集計やグラフ化、チーム共有ができます。
この記事ではコード不要で設定画面だけで完結させる方法と、自分でコードを書く手動実装の両方を解説します。
なぜスプレッドシート保存が便利か
メール通知だけだと、後から「今月の問い合わせ件数」「種別ごとの内訳」を出すのが面倒です。
スプレッドシートに溜めておけば、フィルタ・ピボット・グラフで即座に分析できます。
営業や経営層との共有もリンク1本で済みます。
方法1:設定画面だけで完結させる(コード不要・おすすめ)
functions.php もGoogle Apps Scriptも書かず、WordPress管理画面の設定だけでスプレッドシート保存を実装できます。
Frontierline Forms の連携機能を使えば、次の4ステップで完了します。
デプロイや権限設定でつまずく心配がありません。
手順
- 保存先シートを用意:1行目に見出し(日時・お名前・メール・内容など)を作ったスプレッドシートを準備します。
- 連携を設定:プラグインの連携設定でGoogleスプレッドシートを選び、案内に沿って保存先シートを接続します。
- 項目を対応づけ:フォーム項目とシートの列を、コードを書かず画面上で対応づけます。
- テスト送信:フォームを送信し、行追加と各列の値を確認します。
フォームを修正しても列の対応が崩れにくく、複数フォーム・複数サイトでも管理が破綻しません。
方法2:Google Apps Scriptで手動実装する(上級者向け)
自分でコードを書く場合は、Google Apps Script(GAS)のWebアプリをCF7の送信先にすることで実装できます。
保存先シートとGASを用意する
スプレッドシートを作成し、1行目に見出し(日時・お名前・メール・内容)を並べます。
拡張機能 → Apps Script を開き、次のようなWebアプリを書きます。
function doPost(e) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
const p = e.parameter;
sheet.appendRow([new Date(), p['your-name'], p['your-email'], p['your-message']]);
return ContentService.createTextOutput('ok');
}
「デプロイ → 新しいデプロイ → 種類: ウェブアプリ」を選び、アクセスを「全員」にしてデプロイ。
発行された https://script.google.com/macros/s/.../exec がエンドポイントです。
WordPress側から送信する
CF7の wpcf7_mail_sent フックで、このURLへ送信データをPOSTします。
add_action('wpcf7_mail_sent', function ($form) {
$submission = WPCF7_Submission::get_instance();
$data = $submission ? $submission->get_posted_data() : [];
wp_remote_post('https://script.google.com/macros/s/XXXX/exec', [
'body' => [
'your-name' => $data['your-name'] ?? '',
'your-email' => $data['your-email'] ?? '',
'your-message' => $data['your-message'] ?? '',
],
]);
});
手動実装でつまずく点
- デプロイ設定が分かりにくい:アクセス権限を「全員」にし忘れると403で保存されません。再デプロイのたびにURLが変わる設定もあります。
- 項目名のズレで空欄になる:フォーム項目名とGAS側のキーが一致しないと、列が空のまま行だけ増えます。
- 保守がテーマとGASに二重化:WordPress側のコードとGAS側スクリプトの両方を保守する必要があり、属人化しやすいです。
単純な保存なら手動でも作れるが、デプロイ・権限・項目対応でつまずきやすく保守も二重化します。
だからこそ、設定だけで完結する方法1が現実的です。
スプレッドシート保存とDB保存の使い分け
| スプレッドシート | プラグインのDB保存 | |
|---|---|---|
| 集計・グラフ化 | 得意 | 別途出力が必要 |
| チーム共有 | リンクで簡単 | 管理画面ログインが必要 |
| 件数・権限管理 | 弱い | 管理画面で一元管理 |
| CSV一括出力 | 手動 | ボタンで全件出力 |
両者は排他ではありません。
スプレッドシートで共有・分析しつつ、サイト内ではDBに全件保存しておくと、取りこぼしと分析の両方をカバーできます。
送信ログのDB保存・CSV出力については製品ページの機能一覧を参照してください。
まとめ
CF7単体にスプレッドシート連携はないため、連携対応プラグインで設定するか、GASで自前実装するかのどちらかになります。
複数案件を回すなら設定画面で完結する方法が速く、デプロイのつまずきもありません。
まず試すなら方法1がおすすめです。
スプレッドシート連携に加え、Slack・Chatwork通知、送信ログのDB保存、CSV全件出力まで設定だけで実装したいなら、Frontierline Forms の導入を検討してください。
Frontierline Forms
この設定、管理画面のチェックだけで完了。
通知・送信ログ・CSV出力・マルチステップを、コードを書かず設定画面だけで実装。制作会社向けの5サイト/無制限ライセンスなら、複数案件のフォーム保守をまとめて巻き取れる。決済と同時にライセンスキーを即時発行。