フォームのデータを含むエクスポートされたCSVファイル内の列の順序が変わる


解説

必須ではないフィールドを含むフォームが空のまま送信された場合、FieldData SQLテーブルにはそれらのレコードは保存されません。そのため、エクスポートを実行する際に、最初に送信されたレコードに空のフィールドがある場合、エクスポートされたCSVファイルの最後に対応する列が追加される可能性があります。これにより、エクスポートのタイミングによって列の順序が変わる場合があります。

解決策

この問題を解決するには、ソリューションをSitecore XP 10.3.0以降にアップグレードしてください。

(アップグレードせずに)この問題を回避するには、GenerateFileContentメソッドのロジックを次のように変更して動作をカスタマイズしてください:

  1. Sitecore.ExperienceForms.Client.Data.CsvExportProviderクラスを継承し、GenerateFileContentメソッドをオーバーライドするCsvExportProviderクラスを作成します。

    例えば、この行は次のように置き換えることができます。

    変更前:

    var formData = formEntries.OrderByDescending(item => item.Created);

    変更後:

    var formData = formEntries;

    注意:このコードのサンプルはカスタマイズの出発点としてのみ提供されており、GenerateFileContentメソッドのロジックは必要に応じて変更できます。

  2. カスタム クラスを含むファイルを Web サイトのbinフォルダーに配置します。
  3. [貴社のサイト]\App_Config\Include\zzzフォルダーに構成パッチ ファイルを作成して、次のサービス登録のimplementationTypeをカスタムCsvExportProviderクラスで更新します。
    <register serviceType="Sitecore.ExperienceForms.Data.IExportDataProvider, Sitecore.ExperienceForms" implementationType="Sitecore.ExperienceForms.Client.Data.CsvExportProvider, Sitecore.ExperienceForms.Client" />