【Salesforce】一部の特定ユーザだけに入力規則を適用させてみた
はじめに
Salesforceには、標準機能で「入力規則」という機能があります。
入力規則は、ユーザがデータを入力するときに正確な情報を登録できるように設定できるルールです。
一般的には、すべてのユーザに入力規則が設定されますが、今回は入力規則を「一部のユーザのみ」に適用する設定方法をケースとともに紹介します!
また、今回の事例では「特定プロファイル」や、「特定ユーザ」を指定して設定しますが、入力規則の数式内で以下例のような固定の文字列を使用しない方法で設定していきます。
例)ユーザ名 = XXX@xxxx.co.jp プロファイルID = 00eXXXXXXXXXXXX
前提条件
・商談オブジェクトに選択リスト型のカスタム項目「商品種別(ProdType__c)」を作成します。
・「商品種別」項目はAAA、BBB、CCC の選択値があります。
・商談レコードで「商品種別」AAA を選択できない場合の入力規則は以下の通りです。
ISPICKVAL(ProdType__c,'AAA')
ケース①-入力規則を特定の「ロール」にのみ割り当てる場合
想定されるシナリオ
営業部グループロールに属するユーザが商談レコード登録を行うとき、「商品種別」AAA を選択させたくない。
実現方法
ユーザのロールが、「営業部グループ」の場合、AAA を選択できない入力規則を設定します。
ロールを条件として選択する場合は、グローバル変数「$UserRole」を使用します。
「$UserRole」でIdやロール名などを選択できます。
注意!:ロール名($UserRole.Name)を条件指定する場合は、「表示ラベル」を選択します。
API参照名を選択する場合は入力規則に引っかからないので要注意です。
API参照名で条件指定する場合は$UserRole.DeveloperNameを使用します。
AND(($UserRole.Name = '営業部グループ'), ISPICKVAL(ProdType__c,'AAA'))
ケース②-入力規則を「特定プロファイル」に割り当てる場合
想定されるシナリオ
企画部一般プロファイルに属するユーザのみ、商談レコード登録を行うとき「商品種別」BBB が設定できるように制限したい。
実現方法
ユーザのプロファイルが「企画部一般」の場合のみ、BBB を選択できる入力規則を設定します。
プロファイルを条件として選択する場合は、グローバル変数「$Profile」を使用します。
「$Profile」でIdやロール名などを選択できます。
AND(($Profile.Name <> '企画部一般'), ISPICKVAL(ProdType__c,'BBB'))
ケース③-入力規則をプロファイルやロールなどがバラバラの「複数ユーザ」に割り当てる場合
想定されるシナリオ
企画部マネージャの佐藤さんと、営業部マネージャの田中さん以外のユーザには、商談レコード登録を行うとき、「商品種別」CCC を選択させたくない。
実現方法
企画部マネージャの「佐藤さん」と営業マネージャの「田中さん」以外のユーザには、「商品種別」 CCC を選択させない入力規則を設定します。
「ケース①」や「ケース②」では、「ロール」や「プロファイル」で条件を絞っていましたが、今回は「ロール」も「プロファイル」も異なる共通点のない複数ユーザに対して入力規則をかける方法を紹介します。
共通点のない複数ユーザを入力規則の条件で設定する場合はカスタム権限と権限セットを使用して、入力規則の条件に指定します。
《Step1.カスタム権限の作成》
[設定]>[カスタム権限]からカスタム権限を新規に作成します。
《Step2.カスタム権限を権限セットに割り当て》
Step1 で作成したカスタム権限を権限セットに割り当てます。
権限セットを作成し、「カスタム権限」に割り当てます。
カスタム権限を選択後、Step1 で作成したカスタム権限を選択します。
最後に、「商品種別」の CCC を選択できる、「田中さん」と「佐藤さん」を権限セットに割り当てます。
《Step3.入力規則で条件設定》
入力規則で条件設定をしていきます。
「田中さん」、「佐藤さん」以外のユーザに CCC を選択させないという条件ですので、作成したカスタム権限(商品種別選択カスタム権限)を持っていないユーザはエラーが出るように設定します。
AND(NOT($Permission.ProdTypeCustomPermission) , ISPICKVAL( ProdType__c ,'CCC'))
まとめ
今回は入力規則をロール、プロファイル、不特定のユーザに割り当てる手順を紹介しました。
①ロールを指定して入力規則を設定する場合は、グローバル変数「$UserRole」を使用して制限する。
②プロファイルを指定して入力規則を設定する場合は、グローバル変数「$Profile」を使用して制限する。
③入力規則の対象であることを指すためのカスタム権限を作成する。
④入力規則で指定した特定のプロファイルや権限セットに、カスタム権限を追加する。
⑤エラーとしたいレコードデータ条件を従来通り設定する。
入力規則の対象である複数ユーザを、カスタム権限で指定する。
例)$Permission.カスタム権限名
グローバル変数を活用したり、カスタム権限と権限セットを組み合わせることで、入力規則の数式内にIDやユーザ名などの固定文字列を使用せず特定ユーザに入力規則をかけることができます。
固有文字列を使用せず、権限セットのユーザ追加・削除のみで制御できるため、入力規則の変更が不要です。そのため保守性に優れた実装ができます!