hiddenで値を送信する
ContactFormに非表示の入力項目を用意したいと思ったときは、フォームタグタイプ hidden が使えます。
例えば、下記のように指定します。
[hidden testId01 default:'テスト1']
[hidden testId02 default:'テスト2']
[hidden testId03 default:'テスト3']
[submit]
画面上は送信ボタンのみになりますが、それぞれの名前(この場合testId01〜testId03)の値を受け取ることができるようになります。
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.25.59.jpg)
本文にIDをセットして送信してみます。
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.27.59-1024x688.jpg)
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.28.17-1024x270.jpg)
hiddenの内容が送信されました。
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.28.43.jpg)
スプレッドシートの関数も組み込める
hiddenで値を送信できるので、スプレッドシートの関数として送信することもできます。
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.31.49-1024x543.jpg)
関数の送信例
スプレッドシートに値を動的に取得したい場合、例えば、以下のように指定すると、最終行には行番号が入ります。row関数を使用するという部分がポイントです。
[hidden testId01 default:'=row()']
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.40.00.jpg)
例えば5桁で0埋めしたい、といった場合は、以下のようにTEXT関数を組み合わせることでも可能です。
[hidden testId02 default:'=text(row(),"00000")']
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.40.04.jpg)
さらに、列を動的に取得したい場合はINDIRECT関数を併用することで可能です。これで、動的にD列の末尾(厳密味は行番号)を取得して反映してくれます。
[hidden testId03 default:'=INDIRECT(”D”&row()']
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.40.08.jpg)
![](https://eguweb.jp/wp-content/uploads/スクリーンショット-2023-06-16-12.39.30-1024x432.jpg)
これで、hiddenフィールドがフォームに追加され、非表示の値が送信されるようになりました。
ちなみに、この方法を使用する場合、ダブルクォーテーションで囲んでしまうと、途中で設定が途切れてしまうので、うまく反映されません。
[hidden testId03 default:'=INDIRECT(”D”&row()']
シングルクォーテーション「’」で囲んでいる、という点がポイントですね。
まとめ
Contact Form 7では、hidden(隠し入力項目)フィールドを使用して非表示の値を渡すことができます。hiddenフィールドは、ユーザーには表示されず、フォームの送信時に値が送信されます。便利ですね!
注意点としては、設定を間違えるとデータの反映がおかしくなったり、ユーザーが送信できなくなる場合もあります。また、ユーザーに見えない項目をセットすることになるので、使い方にはくれぐれも注意しましょう。
設定には注意しながら、設定ください。