1752698509
2025-07-16 19:35:00
challenge挑戦
最初の分析中に、それを発見しました Optimizelyフォームは、組み込みのAPIを提供しません プログラムでフォーム送信を直接挿入または更新する。メソッド中 performdatasubmit() UI(Cookieと送信IDの世話をする)を介して自動的に送信を処理すると、 httpcontext、 私たち スケジュールされたジョブにアクセスできないでください 環境 – 一度限りの移行シナリオのように。
✅解決策: ddspermanentStorage
いくつかの調査の後、内部クラスが見つかったことがわかりました ddspermanentStorage Optimizely Formsのデータストアと直接対話するために使用できます。これにより、私たちはできました フォームの提出物をプログラムで挿入して更新します httpcontextに依存せずに。
このクラスをスケジュールされたジョブで利用し、すべてのレコードを正常にインポートすることができました。
🔸 重要: これらの提出物が正しく表示されるようにします 編集モードで[提出]ビューをフォームします、に含める必要があります SystemColumn_Language 作成中のフィールド。

customカスタム提出データタイムの処理
すべてがうまく機能している間、私たちはそれに気づきました 提出タイムスタンプ (作成されました 日付)でした システムによって自動的に生成されます 挿入時。ただし、ソースデータには含まれています 歴史的な提出タイムスタンプ、そしてそれはそうでした レポートとUIディスプレイにとって重要です これらのオリジナルの日付を保持していること。
これを解決するために、私たちはさらに一歩進んで行きました デフォルトの動作をオーバーライドしました カスタム提出日を設定できるようにします。私たちはこれを達成しました 拡張 ddspermanentStorage 以下のように。

🧩依存関係噴射セットアップ
このカスタムクラスは、ソリューションの他の部分(または注入)で再利用する必要がある場合があるため、 DIコンテナに登録することを忘れないでください サービス内でラップしたり、Optimizelyの組み込みサービスを使用したりする場合。
この投稿が同じ挑戦に直面している人に役立つことを願っています!
2025年7月16日
#フォームの提出データをDDSPerを使用して最適化フォームにインポートします