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