どんな取り組みか
本記事は、SalesforceのSOQL(Salesforce Object Query Language)を使用して項目権限を確認しようとした際に発生した問題とその解決策について解説する技術ブログです。具体的には、カスタムオブジェクトの項目権限をFieldPermissionsオブジェクトから取得しようとしたところ、特定の項目がどのプロファイルや権限セットにも権限が付与されていないように見えたにも関わらず、設定画面(UI)では編集権限が付与されているという矛盾が発生しました。
使われた技術スタック
本記事で扱われている主な技術スタックは以下の通りです。
- Salesforce
- SOQL (Salesforce Object Query Language)
- FieldPermissions オブジェクト
実装のポイント
SOQLで項目権限を取得する際、通常はFieldPermissionsオブジェクトを利用します。しかし、特定の項目権限が取得できない場合、その原因を調査する必要があります。本記事で直面した問題は、以下の点に集約されます。
問題の概要:
- カスタムオブジェクトの項目権限をSOQLで取得しようとした。
- 特定の項目について、どのプロファイルや権限セットにも権限が付与されていない結果となった。
- しかし、Salesforceの設定画面(UI)で「項目レベルセキュリティの設定」を確認すると、該当項目には編集権限が付与されていた。
調査と発見:
この矛盾の原因を調査した結果、設定画面(UI)で該当項目の設定を詳細に確認した際に、その項目が「必須項目」であることが判明しました。必須項目は、Salesforceの保存時に必ず入力が必要となるため、全プロファイルで編集権限が強制的に付与されるという特別な仕様があります。
必須項目とFieldPermissionsオブジェクトの仕様:
Salesforceの仕様として、必須項目は常に参照可能および書き込み可能とみなされるため、FieldPermissionsオブジェクトにはこれらの項目のレコードが格納されないことが確認されました。公式ドキュメントによると、以下のデータ型はFieldPermissionsレコードが返されないとされています。
- OwnerId
- 主従カスタム (関係) 項目
- 必須カスタム項目
また、必須項目は「参照のみ」や権限なしに設定できないように、設定画面上でも読み取り専用としてロックされる仕様になっているようです。
得られた成果や学び
本記事の筆者は、FieldPermissionsオブジェクトを使用して項目権限を簡単に確認できると考えていましたが、必須項目の特殊な仕様を把握できていなかったために問題に直面しました。この経験から、SOQLで項目権限が取得できない場合に、「おかしいな?」と感じたら、オブジェクトマネージャーから該当項目の設定を直接確認することが、問題解決への近道となる場合があるという学びを得ました。
まとめ
SalesforceでSOQLを使用して項目権限を取得する際、必須項目はFieldPermissionsオブジェクトには格納されないという仕様が存在します。そのため、必須項目についてはSOQLでの権限確認ができない場合があります。このような場合に遭遇したら、設定画面(UI)で項目が必須項目になっていないかを確認することが重要です。この仕様を理解しておくことで、同様の問題に直面した際の迅速な解決に繋がります。
出典: https://qiita.com/korede/items/50b84d9ea7850e615ca9
Related Certifications
この記事に関連する技術領域の認定資格
Salesforce 関連資格
- Salesforce Certified Administrator
- Salesforce Certified Platform Developer I
- Salesforce Certified Platform Developer II
- Salesforce Certified Application Architect
- Salesforce Certified System Architect
- Salesforce Certified Technical Architect
※ 認定資格は技術スキルの体系的な学習に役立ちます。試験の出題範囲や受験要件は変更される場合があるため、受験前に必ず公式サイトで最新情報をご確認ください。
SF Tech & Win
Salesforce × AWS × AI 連携の実装ノウハウ
SIer・スタートアップ・中小企業のDX推進に役立つアーキテクチャ事例・実装パターン・最新アップデート情報を毎朝配信。


コメント