入力規則をスキップする
学習の目的
この単元を完了すると、次のことができるようになります。
- 入力規則にスキップスイッチを実装する。
時として、データを更新する必要があるのに、入力規則にブロックされてしまうという状況に遭遇することがあります。あるいは、一部のユーザーを特定の入力規則から除外したい場合があるかもしれません。そうした状況で役立つのがスキップスイッチです。この単元では、ユーザーが 1 つ以上の入力規則をスキップできるようにする方法について学習します。
入力規則をスキップする
入力規則が綿密に設計されていれば、スキップが必要になることはほとんどありません。たとえば、数式に ISCHANGED と ISNEW を実装したとします。この入力規則が実行されるのは、データが変更されて要件が満たされなくなった場合のみです。概して、入力規則をスキップする必要が生じるのは、履歴データの修正やデータの読み込みが必要になる場合と思われます。
そのような場合は、スキップ機能を備えた入力規則を構築することができます。ここでは、リードの商品への関心項目に値が入力された後で、ユーザーがその項目をクリアできないようにする入力規則を作成することにします。その一方で、特定のユーザーはこの項目をクリアできるようにしたいと考えています。以下の手順で、カスタム権限を作成し、その権限を権限セットに割り当てて、その権限セットをユーザーに割り当てます。最後に、ユーザーにその権限がない場合にのみ True に評価される入力規則を作成します。ややこしいように思うかもしれませんが、順番に見ていきましょう。
カスタム権限を作成する
入力規則をスキップする必要がある場合の最初のステップは、カスタム権限を作成することです。
- [Setup (設定)] の [Quick Find (クイック検索)] ボックスに
Custom Permissions(カスタム権限) と入力します。 - [Custom Permission (カスタム権限)] をクリックします。
- [新規] をクリックします。
- 次の情報を入力します。
- Label (表示ラベル):
Bypass Lead Validation Rules(リードの入力規則をスキップ) - Name (名前):
Bypass_Lead_Validation_Rules - Description (説明):
Allows users to bypass lead validation rules.(ユーザーがリードの入力規則をスキップできるようにします。)
- [保存] をクリックします。
権限セットを作成する
カスタム権限を作成したら、権限セットに割り当てて、その権限セットをユーザーに割り当てる必要があります。
- [Setup (設定)] の [Quick Find (クイック検索)] ボックスに
Permission Sets(権限セット) と入力します。 - [権限セット] をクリックします。
- [新規] をクリックします。
- 次の情報を入力します。
- Label (表示ラベル):
Bypass Lead Validation Rules(リードの入力規則をスキップ) - Name (名前):
Bypass_Lead_Validation_Rules - Description (説明):
Allows users to bypass lead validation rules.(ユーザーがリードの入力規則をスキップできるようにします。) - ライセンス: なし
- [保存] をクリックします。
- [Permission Set Overview (権限セット概要)] 画面で、[Custom Permission (カスタム権限)] が表示されるまでスクロールダウンします。
- [Custom Permission (カスタム権限)] をクリックします。
- [編集] をクリックします。
- [Bypass Lead Validation Rules (リードの入力規則をスキップ)] カスタム権限を [Enabled Custom Permissions (有効化されたカスタム権限)] セクションに追加します。
- [保存] をクリックします。
- [Manage Assignments (割り当ての管理)] をクリックします。
- [Add Assignment (割り当てを追加)] をクリックします。
- 自分の名前の隣にあるチェックボックスをオンにします。
- [Next (次へ)] をクリックします。
- [割り当て] をクリックします。
- [Done (完了)] をクリックします。
ヒント: セッションベースの権限セットを使用すると、現在のセッションにその権限セットを適用する時点をユーザーが選択できるフローを作成できます。この場合、デフォルトではユーザー全員が入力規則に従う必要があります。ユーザーがやむを得ずスキップしなければならない状況に直面した場合、フローにアクセスすれば、レコードを保存する特別な権限が付与されます。このトピックについての詳細は、Trailhead の「セッションベースの権限セットとセキュリティ」モジュールを参照してください。
スキップ機能を備えた入力規則を作成する
次に、リードの [Product Interest (商品への関心)] 項目に値が入力された後、ユーザーがその項目をクリアできないようにする入力規則を作成します。
- [設定] で [オブジェクトマネージャー] をクリックします。
- [リード] をクリックします。
- 左サイドバーで、[Validation Rules (入力規則)] をクリックします。
- [新規] をクリックします。
- 入力規則に次のプロパティを入力します。
- Rule Name (ルール名):
LEAD002_Product_Interest_Required - Description (説明):
Once Product Interest has been populated, it cannot be cleared.([商品への関心] 項目に値が入力された後でクリアすることはできません。) - エラー条件数式:
AND( NOT( $Permission.Bypass_Lead_Validation_Rules ), NOT(ISBLANK(TEXT( PRIORVALUE( ProductInterest__c )))), ISBLANK( TEXT( ProductInterest__c )) )
d. Error Message (エラーメッセージ): Once Product Interest has been populated, it cannot be cleared [LEAD002] ([商品への関心] 項目に値を入力した後でクリアすることはできません [LEAD002])
e. Error Location (エラー表示場所): Field (項目)、Product Interest (商品への関心)
6. [保存] をクリックします。
では、入力規則の数式を 1 つずつ見ていきましょう。
NOT( $Permission.Bypass_Lead_Validation_Rules ): この条件は、ユーザーにリードの入力規則をスキップする権限がないかどうかを確認します。 ユーザーにこの特定の権限がない場合は、数式の評価が True になります。NOT(ISBLANK(TEXT(PRIORVALUE(ProductInterest__c)))): 数式のこの部分は、ProductInterest__c項目の前の値 (現在の編集の前) が空白ではないかどうかを確認します。ProductInterest__cは選択リストであるため、空白かどうかを判断可能にするためには TEXT 関数を使用する必要があります。前の値が空でない場合は、数式の評価が True になります。ISBLANK(TEXT(ProductInterest__c)): 最後に、この部分はProductInterest__c項目の現在の値が空白かどうかをチェックします。項目が実際に空の場合は、数式の評価が True になります。
上記のすべてをまとめましょう。
3 つの条件を AND 演算子でまとめたこの全体の数式は、次の条件がすべて満たされた場合にのみ評価が True になります。
- ユーザーに Bypass_Lead_Validation_Rules 権限がない。
- ProductInterest__c 項目の前の値が空白ではない。
- ProductInterest__c 項目の現在の値が空白である。
3 つの条件がすべて満たされると (つまり、数式の評価が True になる)、入力規則がトリガーされてユーザーにエラーメッセージが表示され、指定した条件が満たされるまでレコードを保存できなくなります。この入力規則により、ProductInterest__c の値が空白以外の値から空白値に変更された場合は、ユーザーにこの検証をスキップする適切な権限が必要になります。権限がない場合は、ProductInterest__c に空白以外の新しい値を入力しなければなりません。
リソース
- ブログ投稿: Allow Certain Users to Edit Data Using Custom Permissions in Validation Rules (特定のユーザーが入力規則のカスタム権限を使用してデータを変更できるようにする)
- Trailhead: セッションベースの権限セットとセキュリティ
- Salesforce+: Write Effective and Maintainable Validation Rules (効果的でメンテナンスしやすい入力規則の記述)
