はじめに
今回は、Salesforceで特定の項目をレコード所有者かシステム管理者だけが編集できるようにする方法について解説していきます。
この設定は、下記のような入力規則に数式を記述することによって実現することができます。ここでは「Sample__c」というAPI参照名の項目をレコード所有者とシステム管理者だけが編集できるようにする方法を解説します。
まずは対象オブジェクトの項目API参照名をコピーしてください。そして、「入力規則」を選択してください。
そして、下記の図のように入力してください。
数式
AND(
ISCHANGED( Sample__c ),
NOT(
OR(
$Profile.Name = "システム管理者",
OwnerId = $User.Id
)
)
)
解説
上記の数式の要素を一つ一つ解説していきます。
AND(...)
:すべての条件がTrueである場合にエラーを発生させます。ISCHANGED( Sample__c )
:Sample__c
フィールドが変更された場合にTrueとなります。NOT(...)
:内部の条件が真でない場合にTrueとなります。OR(...)
:内部のいずれかの条件がTrueである場合にTrueとなります。$Profile.Name = "システム管理者"
:現在のユーザーのプロファイル名が「システム管理者」である場合にTrueとなります。OwnerId = $User.Id
:レコードの所有者IDが現在のユーザーIDと一致する場合にTrueとなります。
したがって、この数式は次のように解釈できます:
Sample__c
フィールドが変更された場合に- 現在のユーザーが「システム管理者」でなく、かつレコードの所有者でもない場合
- エラーが発生する
要約すると、この数式は、システム管理者またはレコード所有者以外のユーザーがSample__c
の項目を変更しようとした場合にエラーを発生させるということになります。
終わりに
今回の説明では「システム管理者」も編集出来るように設定しました。なぜなら、レコードの所有者が突然の欠勤や退職などで項目が編集することが出来なくなることを防ぐためです。いろいろな想定をした上で、最適な設定方法を見つけていきましょう!