SITECORE MANIA 開発者向け技術ブログ

その他

菅野

菅野

フォームの複製・再作成による送信アクションのフィールド参照について

Sitecore Forms では、既存のフォームを複製したり、項目を作り直したりして新しいフォームを用意する場面があります。手早くフォームを増やせて便利な一方で、複製・再作成の際に「送信アクションが参照しているフィールド」との紐づけが静かに切れてしまうことがあります。フォーム自体は送信できてしまうケースがあり、エラーも出ないため気づきにくく、通知メールが届かないといった形で後から表面化する、注意が必要なポイントにもなります。本記事では、その仕組みと確認・対処方法を紹介します。

送信アクションとフィールド参照の仕組み

Sitecore Forms のフォームは、フォーム項目(フィールド) と、送信時に実行される送信アクションで構成されています。各フォーム項目は Sitecore アイテムであり、それぞれ固有のアイテムIDを持っています。
カスタマイズをしていない標準状態で利用できる送信アクションは、以下の8種類です(バージョンにより表記の差があります)。ここで重要なのは、フォーム項目を参照するアクションと、そう
でないアクションがあるという点です。
送信アクション フォーム項目を参照するか
メールを送信 する(To/CC/Bcc に項目、件名・本文に Insert Field)
メールキャンペーンのメッセージを送信 する(EXM でコンタクト識別に使うメール項目を指定)
URL へリダイレクト する(URL パラメータに項目値を渡す)
データを保存 しない(全項目を保存。個別のマッピングは持たない)
ゴールをトリガー しない(ゴールを参照)
成果をトリガー しない(成果を参照)
ページへリダイレクト しない(ページアイテムを参照)
 
「メールを送信」「メールキャンペーンのメッセージを送信」「URL へリダイレクト」の3つが、送信時にフォーム項目を参照します。メール送信系は宛先や本文の差し込みに項目を使い、URL へリダイレクトは URL パラメータに項目値を渡します。設定画面ではドロップダウンで項目名を選んでいるように見えますが、内部的に保存されるのは項目の表示名ではなくアイテムIDです。

一方、データを保存・ゴール/成果/キャンペーンをトリガー・ページへリダイレクトは、フォーム項目ではなくゴールやページなどを参照するため、今回の「項目の作り直し」では影響を受けません。参照が切れうるのは、フォーム項目を参照する上記3アクションです。
補足:「メールキャンペーンのメッセージを送信」は EXM(Email Experience Manager)を利用するアクションです。[メールフィールドを選択] で指定したフォームのメール項目を使って、メッセージを送る相手(コンタクト)を識別します。この項目参照が切れると、宛先コンタクトの識別に影響します。EXM が導入されていない環境ではこのアクション自体が利用できません。
 

なぜ複製・再作成で参照が切れるのか

フォームをまるごと作り直したり、複製して項目を差し替えたりすると、新しい項目には新しいアイテムIDが採番されます。旧項目と同じ名前・同じ設定にしても、アイテムIDは別物になります。
しかし、送信アクションのフィールドマッピングは自動では追従しません。手作業で選び直さない限り、旧項目のアイテムIDを指したまま残ります
 
複製・再作成後のフォーム
  項目「メールアドレス」        →  {新しいアイテムID}   … 採番し直された
  送信アクションのフィールド参照 →  {旧アイテムID}       … 昔のまま。存在しない項目を指している
 
正常時と、参照が切れた状態を図にすると下図のようになります。左が正常時、右が複製・再作成後です。
 

実例:メールキャンペーンのメッセージを送信で宛先参照が切れる

複製したパターン

  1. Test1という名前のフォームアイテムを作成します。
  2. Test1を複製し、Test2を作成します。
  3. フォームでTest2を選択します。
  4. 送信ボタンを選択し、「メールキャンペーンのメッセージを送信」を開き、[メールフィールドを選択] のドロップダウンを確認すると、下図のようになります。

項目の再作成のパターン

  1. Test1のメールアドレス項目を一度削除します。以下画像は、削除前の送信アクションの状態になります。
  2. 再度「メールアドレス(Test)」という項目を追加します。
  3. 送信ボタンを選択し、「メールキャンペーンのメッセージを送信」を開き、[メールフィールドを選択] のドロップダウンを確認すると、下図のようになります。

 

ドロップダウンには現行のフォーム項目(Company / LastName / Email など)しか並んでいないにもかかわらず、選択値として「ed5624fd-f760-462b-9a02-88a7b8ff2ac4 - value not in the selection list」のように、選択リストに存在しない値(=旧項目のアイテムID)が存在しています。これがフィールド参照が切れているサインです。


参照切れ防止の工夫

複製・再作成を行う際は、以下を手順に組み込んでおくと防ぐことができます。

  • フォームの項目を作り直した/差し替えたら、フィールドを参照する送信アクションを1つずつ開いて確認する
  • マッピング欄に「value not in the selection list」が残っていないか目視する
  • 現行の正しい項目に選び直して保存する
  • 同じタイミングで作り直した他のフォームがあれば、横展開でチェックする
  • 「送信できた」で完了とせず、送信アクションの処理の結果までを確認の基準にする

まとめ

フォームの複製・再作成は数分で終わる手軽な作業ですが、その裏で送信アクションのフィールド参照が静かに切れてしまうことがあります。参照が切れても、フォーム送信自体は通り、エラーも表示されないことがあるため、通知メールが届かないなど、そのフィールドを使った処理が行われない形で後から表面化します。

影響を受けるのは、フォーム項目をアイテムIDで参照するアクションです。複製・再作成を行った際は、これらのアクションのフィールドマッピングを確認し、value not in the selection listが残っていないかを点検することが重要です。初期のフォーム設計だけでなく、運用でフォームを作り直す手順の中にもこの確認を組み込んでおくと、思わぬ通知漏れを防ぐことができます。


※エントリーの内容・画像等は、公開時点での情報に基づきます。
※Sitecoreのバージョンによって実装されている機能が異なります。
この記事を読んだ人はこちらの記事も読んでます

Sitecore導入に関するご相談・資料ダウンロード

導入をご検討・ご依頼の方や、サービスについてご不明点がございましたらお気軽にお問い合わせください。

Sitecoreの運用問題を解決する

既にSitecoreを導入しているお客様向けサービス