ウォークスルー
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
消去権(または忘れられる権利)は、ユーザーが個人データを削除したいという権利に関するものです。このトピックでは、Sitecoreフォームを使って提出フォームからユーザーの個人情報を削除する方法について説明します。
!警告このトピックは、データプライバシーコンプライアンスをサポートするためにSitecoreフォームの実装をどのように設定するかを説明します。このトピックは網羅的なものではなく、いかなる法律や規制の内容、解釈、適用に関する法的助言として解釈または使用すべきではありません。
Sitecoreおよびそのパートナーがデータプライバシー義務を遵守しやすくするために、Sitecoreフォームはユーザーの個人情報のデータベース記録を匿名化するAPIを提供しています。これは、すべてのフィールド提出値を REDACTEDに隠し、連絡先IDを無効化し、連絡先がアップロードしたファイルを削除することでこれを実現します。
このウォークスルーでは、フォームの投稿を編集し、特定の連絡先がアップロードしたファイルを削除するカスタム送信アクションの作成方法を説明しています。このトピックで使用されたシナリオは、訪問者が個人情報の黒塗りを確定するためにチェックできる同意チェックボックスを表示する方法を説明しています。訪問者がそのボックスを選択して「 送信」をクリックすると、編集が行われます。すべての訪問者の投稿は黒塗りされ、訪問者がアップロードしたすべてのファイルは削除されます。

!重要この場合、連絡先はSitecore Analyticsを通じて取得されます。したがって、編集はCMSのみモードで実行されません。Sitecoreフォームは依存性注入によって編集データプロバイダーを作成するため、設定ファイルを使ってその実装を上書きできます。
このウォークスルーで使用されているクライアントスクリプトは、フォームデザイナーが同意チェックボックスとしてチェックボックス要素を使えるようにしています。例えば:

このウォークスルーでは、以下の方法を説明します:
- サブミッション・アクションクラスを作成する
- SPEAKエディターコントロールを作成する
- エディター用のパラメータを含むフォルダを追加してください
- 編集者用のクライアントスクリプトを作成します
- アクションアイテムを提出する
サブミッション・アクションクラスを作成する
カスタム送信アクションを作成する際は、SubmitActionBase
サブミットアクションクラスを作成するには:
-
SubmitActionBase
から継承するRedactDataクラスを作成します。 -
RedactDataパラメータを指定します。
-
Executeメソッドを上書きし、ブール値検証パラメータを提供します。例えば:
using System; using System.Linq; using Microsoft.Extensions.DependencyInjection; using Sitecore.Analytics; using Sitecore.DependencyInjection; using Sitecore.ExperienceForms.Data; using Sitecore.ExperienceForms.Models; using Sitecore.ExperienceForms.Mvc.Models.Fields; using Sitecore.ExperienceForms.Processing; using Sitecore.ExperienceForms.Processing.Actions;
namespace Sitecore.ExperienceForms.Gdpr.Samples.SubmitActions { public class RedactData : SubmitActionBase
{ private readonly IRedactDataProvider _redactDataProvider = ServiceLocator.ServiceProvider.GetService (); private readonly ITracker _tracker = Tracker.Current; public RedactData(ISubmitActionData submitActionData) : base(submitActionData) { }
protected override bool Execute(RedactDataSubmitActionData data, FormSubmitContext formSubmitContext) { var consentCheckBox = formSubmitContext.Fields.FirstOrDefault(f => Guid.Parse(f.ItemId) == data.ConsentCheckboxFieldId);
if (consentCheckBox is CheckBoxViewModel checkboxVm) { if (checkboxVm.Value) { var contactId = _tracker?.Contact?.ContactId; if (contactId != null) { _redactDataProvider.RedactContactSubmissions(contactId.Value); } } } else { return false; }
return true; } } }
using System;
namespace Sitecore.ExperienceForms.Gdpr.Samples.SubmitActions { public class RedactDataSubmitActionData { public Guid ConsentCheckboxFieldId { get; set; } } }
-
サブミッションアクションクラスをビルドしてデプロイします。
SPEAKエディターコントロールを作成する
次のステップは、フォームフィールドを連絡先情報フィールドにマッピングできるUIを作成することです。Sitecoreフォームの場合、送信アクションエディタはコアデータベースにあります: /sitecore/client/Applications/FormsBuilder/Components/Layouts/Actions
!注この例では、Sitecore Rocks Visual Studioプラグインが必要です。このプラグインはVisual Studio 2019以前のバージョンと互換性があります。
コントロールを作成するには:
-
/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actionsへナビゲート。
-
右クリックでアクションを選び、追加をクリックしてから新しいアイテムをクリックします。
-
/sitecore/client/Speak/Templates/Pages/Speak-BasePageテンプレートをクリックし、「新しいアイテム名を入力して」欄にRedactDataを入力し、「**OK」**をクリックします。
-
作成したRedactDataアイテムを右クリックして「 タスク」をクリックし、「 デザインレイアウト」をクリックしてください。
-
レイアウトダイアログボックスで、/sitecore/client/Speak/Layouts/Layoutsに移動してSpeak-FlexLayoutのレイアウトをクリックし、「**OK」**をクリックします。
-
左上で 「レンダリングを追加 」をクリックし、「 レンダリングを選択する 」ダイアログボックスで「 すべて 」をクリックしてPageCodeを検索してください。

-
PageCodeをクリックしてOKをクリックします。
-
PageCodeレンダリングプロパティで、PageCodeScriptFileNameプロパティをページコードスクリプトを含むJavaScriptパスに設定します:/sitecore/shell/client/Applications/FormsBuilder/Layouts/Actions/RedactData.js。
-
SpeakCoreVersionプロパティをSpeak 2-xに設定してください。
-
Search Text Viewレンダリングを選択し、「 追加 」をクリックして追加: HeaderTitle、HeaderSubtitle。
-
2つのアイテムについては、プロパティ セクションで以下のIDプロパティを設定します。
- IsVisible – False
- PlaceholderKey – ページ・ボディ
-
以下のレンダリングを追加してください:
- MainBorder タイプ Border。
- CheckboxesDropList 型 DropListの。 PlaceholderKey プロパティを MainBorder.Contentに設定します。
- FormClientApi 型 FormClientApiの。 PlaceholderKey プロパティを MainBorder.Contentに設定します。
現在のレンダリングは次のようになります:

エディター用のパラメータを含むフォルダを追加してください
次に、エディターのパラメータを含むフォルダを追加する必要があります。
PageSettingsフォルダを追加するには:
-
/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actionsに移動し、先ほど作成したRedactDataアイテムを右クリックし、「追加」をクリックし、「新しいアイテム」をクリックします。
-
Search PageSettingsテンプレートを選択し、名前PageSettingsを入力してOKをクリックします。
-
作成したPageSettingsアイテムを右クリックして「 追加、新しいアイテム」をクリックします。
-
SearchしてText Parametersテンプレートを選択し、「 追加 」を2回クリックし、以前作成したレイアウトのIDと同じ名前でアイテム名を付けます。
- HeaderTitle – ダブルクリックして テキスト欄 に入力: GDPR Redact Data。
- HeaderSubtitle – ダブルクリックして テキスト欄 で入力: 提出されたデータを編集するには、同意チェックボックスを選択してください。
-
PageSettingsアイテムを右クリックして「追加、新しいアイテム」をクリックします。SearchDropList Parametersテンプレートをクリックし、「追加」をクリックし、アイテム名をCheckboxesDropList。
-
CheckboxesDropList項目をダブルクリックして、以下のフィールド値を設定します:
チェックボックスDropListパラメータ
ValueFieldName
ディスプレイフィールドネーム
チェックボックスドロップリスト
itemId
名称
-
PageSettingsアイテムを右クリックして「追加、新しい項目」をクリックします。Search →→FormClientApi→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→
-
FormClientApiアイテムをダブルクリックし、「フォーマットフィールド値」テーブルでitemIdとitemIdの間にバインディングを追加し、nameとnameの間に別のバインディングを追加します。IncludedFieldTypeIdsフィールドで、左側のリストボックスでField Types/Basic/Checkboxを見つけてクリックし、**>**をクリックして右のリストボックスにコピーします。

-
/sitecore/client/Applications/FormsBuilder/Components/Layouts/Actionsに移動し、先ほど作成したPageSettingsアイテムを右クリックします。
-
新しい項目を追加してください。 StylesheetのタイプPage-Stylesheet-File:

-
新しいスタイルシート項目をクリックし、Stylesheetの値を以下に設定します: /sitecore/shell/client/Applications/FormsBuilder/Layouts/Actions/Actions.css。
編集者用のクライアントスクリプトを作成します
次に、編集者用のクライアントスクリプトを作成しなければなりません。
スクリプトを作成するには:
-
基本のSubmit Actions編集スクリプトを使用してください。Submit actions編集スクリプトは常に以下の基本を持っています:
(function (speak) { var parentApp = window.parent.Sitecore.Speak.app.findApplication('EditActionSubAppRenderer');
speak.pageCode("underscore", function (_) { return { initialized: function () { this.on({ "loaded": this.loadDone }, this);
if (parentApp) { parentApp.loadDone(this, this.HeaderTitle.Text, this.HeaderSubtitle.Text); parentApp.setSelectability(this, true); } },
loadDone: function (parameters) { this.Parameters = parameters || {}; },
getData: function () { return this.Parameters; } }; }); })(Sitecore.Speak);
-
EditActionSubAppRendererコンポーネントを使いましょう。エディターは、EditActionSubAppRendererコンポーネントによってSpeakダイアログのフレーム内に読み込まれます。
ダイアログヘッダーのタイトルとサブタイトルを親に渡し、送信ボタンが有効になるタイミングを設定します。
スクリプトの仕組みは以下の通りです。
- initialized – はフィールドからデータを配列に収集します。
- loadDone – フォームコントロールを反復し、その動的データをフィールド配列に設定します。現在の送信アクションのパラメータプロパティ値がフィールドリストに含まれていない場合(例えばフィールドが削除されたりフォームがコピーされた場合)、配列内の選択リスト項目に含まれていないID値が含まれます。その後、SPEAKフォームをパラメータオブジェクトにバインドします。
- getData – 送信ボタンをクリックするとgetData関数が呼び出されます。新しいパラメータオブジェクトを収集するためにフォームデータを反復処理します。空の選択(フィールドマッピング)は省略されます。
最終的なスクリプトは次のようになります:
(function (speak) { var parentApp = window.parent.Sitecore.Speak.app.findApplication('EditActionSubAppRenderer'); speak.pageCode("underscore", function (_) { return { initialized: function () {
this.on({ "loaded": this.loadDone }, this);
this.Fields = this.FormClientApi.getFields(); this.CheckboxesDropList.Items = this.Fields;
if (parentApp) { parentApp.loadDone(this, this.HeaderTitle.Text, this.HeaderSubtitle.Text); parentApp.setSelectability(this, true); } }, loadDone: function (parameters) { this.Parameters = parameters || {}; this.CheckboxesDropList.SelectedValue = this.Parameters.consentCheckboxFieldId; }, getData: function () { this.Parameters.consentCheckboxFieldId = this.CheckboxesDropList.SelectedValue; return this.Parameters; } }; }); })(Sitecore.Speak);
アクションアイテムを提出する
アクションアイテムを提出するには:
-
/sitecore/system/Settings/Forms/Submit Actionsへナビゲート。
-
右クリックで 「アクションを送信」をクリックし、「 挿入」をクリックし、「 テンプレートから挿入」をクリックします。
-
/System/Forms/Submit Actionテンプレートのアイテム名欄で、名前Redact Dataを入力して挿入をクリックします。
-
作成したアイテムに移動し、設定 セクションのModel Typeフィールドで値をクラスタイプ名に設定します。
-
エラーメッセージ欄には、例えば「*データの編集に失敗!」*といったエラーメッセージを入力してください。
-
エディターフィールドで、今作成したエディターを選択してください。例えばRedactData。
-
「外観」セクションで、フォーム要素ペインで表示したいアイコンを選択します。
フォーム要素のペインで「 Add a submit action」をクリックすると、「 Redact Data 」アクションをクリックできます。
