Salesforce には標準オブジェクト/カスタムオブジェクトの設定を行うための「オブジェクトマネージャ」という機能があります。
こちらは Salesforce プロジェクトに携わる方なら誰もが操作したことのある機能だと思います。
しかし、Salesforce では通常では UI 上アクセスできないシステムオブジェクトが多数存在します。
本記事では、そのようなシステムオブジェクトをオブジェクトマネージャで表示する方法を小ネタとして紹介します。
一般的なオブジェクトの場合
この場合は説明不要だと思いますが、[設定] - [オブジェクトマネージャ] - [任意のオブジェクト名で検索] という手順が一般的かと思います。
オブジェクトマネージャは、Salesforce の開発者なら一番よく使う機能と言っても過言ではないでしょう。ここまでなら釈迦に説法ですね。
システムオブジェクトの場合
Salesforce を扱っていると、通常はオブジェクトマネージャでは管理されていないオブジェクトにも手を加えるケースがたまにあります。
例えば、ファイルに関する複雑な要件の実現のために、「ContentDocument」「ContentDocumentLink」といったオブジェクトの情報を参照したり、トリガーを実装したりする機会があるかもしれません。
これらは通常だとシステム内部オブジェクトの扱いのため、先述のオブジェクトマネージャでは検索できません。
上記画像の場合は、ContentVersion(コンテンツバージョン)は「コンテンツ」の検索でヒットしています。
しかし、関連するオブジェクトである ContentDocument(コンテンツドキュメント) や ContentDocumentLink(コンテンツドキュメントリンク) といったオブジェクトは表示されていませんね。
方法①:Lightning Experience ページから遷移する
オブジェクトの詳細画面を定義する際に、オブジェクトマネージャを開きたい時ってありますよね。
この場合、[設定(歯車アイコン)] - [オブジェクトを編集] という導線で、設定を開かずともオブジェクトマネージャを表示させることができます。
この機能は、表示中のレコードのオブジェクトを編集するための機能のようですね。
つまり... ContentDocument(コンテンツドキュメント)のようなオブジェクトにも利用できるのでは?と思い、試してみました。
先ほど「コンテンツ」の検索でアクセスできなかった ContentDocument(コンテンツドキュメント)のオブジェクトをオブジェクトマネージャで確認できました。
しかし、この方法にも弱点があります。
オブジェクトによっては、詳細画面が確認できないものもあるのです。
先ほど挙げた、ContentDocumentLink(コンテンツドキュメントリンク)もその一つです。
画面上では、ファイルの詳細画面の「共有先」として表示はされるものの、レコードの詳細画面を開く導線がありません。
方法②:直接URLでオブジェクトを指定する
方法①でアクセスできないオブジェクトは、この方法で解決できます。
オブジェクトマネージャの画面のURLは以下のようになっています。
https://<ドメイン >.lightning.force.com/lightning/setup/ObjectManager/<オブジェクトのAPI名>/view
つまり、ここにAPI名を指定すればほぼ全てのオブジェクトに簡単にアクセスできるというわけです。
このURLをメモしておいて、開発の際に素早くアクセスするのが良いかと思います。
このように、先ほど挙げた ContentDocumentLink(コンテンツドキュメントリンク)にもアクセスできました。
ただしシステム内部オブジェクトのため、項目の変更やレイアウト設定等はできない場合がほとんどです。
どんな場合に役立つか
大規模なシステム改修の場合、既存の設定を確認するのも一苦労です。
どのオブジェクトに、どのようなトリガーや入力規則が設定されているか、あてもなく確認するのは非常に骨の折れる作業です。
全てのベンダーが適切にトリガー名を命名してくれていればこんな苦労はないのですが、package.xml でごそっとソースをリトリーブした際に、結局上から順に中身を確認しないと・・・なんてことはザラにあります。
実装時に影響するオブジェクトのあたりがついているのであれば、このようにオブジェクトマネージャ上で表示し、「貼られているトリガーはないかな」等の確認が行えるわけです。
ContentDocumentLink(コンテンツドキュメントリンク)のようなシステム内部オブジェクトであっても、トリガーの設定などは可能なので、思いもよらぬ箇所で本来の実装に影響しかねないですね。
おわりに
Salesforce の開発は、時には正攻法ではない方が効率が良い場合もあります。
小ネタではありますが、引き出しを多く持っておくに越したことはありません。
本記事が少しでもお役に立ちますように。
コメント