![見出し画像](https://assets.st-note.com/production/uploads/images/160659210/rectangle_large_type_2_c3603dd73926a7901fec06c22f35368c.jpeg?width=1200)
【Salesforce】Salesforceの設定を確認するSOQL
はじめに
こんにちは。CREFILでエンジニアをしている松井です。
この記事では、Salesforceの設定を確認するために、SOQLで取得する方法をご紹介します。
Salesforceの設定の確認
Salesforceの設定を確認する方法としては、次のような方法があります。
画面から確認する。
メタデータAPIで取得して確認する。
SOQLで取得して確認する。
まず、1番目の画面から確認する方法は、なにより単純で手っ取り早いです。しかし、対象が多い場合は設定画面でひとつひとつポチポチしていく必要があるため、面倒です。
次に、2番目のメタデータAPIで取得する方法は、Visual Studio
CodeでSalesforceの開発環境を構築していれば、GUI操作で取得可能ですし、対象が多い場合でもまとめて取得することができます。ただし、メタデータ形式での取得となり、設定がまるごとXMLファイルで出力されるため、視認性はあまりよくありません。
そこで、3番目のSOQLで設定を取得する方法が、結構使いやすいです。
SOQLであれば、対象が多い場合でも検索結果としてまとめて取得できます。また、取得できる結果は表形式なので、Excelなどに貼り付けて確認しやすいです。さらに、確認したい設定項目だけをSELECTしたり、確認したい対象だけをWHERE句で条件指定したり、なども少し修正するだけなので、絞り込みにも柔軟に簡単に対応可能です。
利用シーン
進行中のプロジェクトに新たに参画する時や、別の開発担当から引き継ぐ時など、現状のSalesforceの設定をまとめて確認したいときには便利です。
あと、個人的によくある利用シーンとしては、次のような状況があります。
画面からあれこれ設定変更をして、期待通りに動作するようになったのはよいけれど、自分が何を変更したのか忘れてしまって、どれをリリース対象とすればよいのだったっけ、、みたいなことがあります。ちゃんと記録しておけ、という話ではあるのですが、色々と試したりしていると漏れてしまうことが正直あります。
そんな時は、SOQLで作成者や最終更新日時を条件に指定して、自分が最近変更した設定を取得します。最終的にリリースが必要な変更を改めて確認して、整理できてからリリースする、という手順を実施することが多いです。
SOQL
ここからは、具体的なSOQLを列挙していきます。
参照するオブジェクト名に公式リファレンスページへのリンクをつけていますので、SELECTしている項目の詳細については、そちらをご参照いただければと思います。
なお、"(Tooling API)"の記述があるオブジェクトについては、Tooling
APIを有効にしてSOQLを実行してください。この記述があるものはTooling
APIのオブジェクトで、記述がないものは標準オブジェクトです。
開発者コンソールであれば、[Query Editor]タブの[Execute]ボタン右横の [Use Tooling API]チェックボックスにチェックを入れてください。その他のSQOL実行ツールでも、おそらく同様の設定があると思います。
オブジェクト(カスタムオブジェクト)
EntityDefinition (Tooling API)
WHERE句の "KeyPrefix LIKE 'a%" はカスタムオブジェクトのみを対象する条件です。この条件を削除すると、標準オブジェクトも取得できます。
SELECT Id, Label, DeveloperName, QualifiedApiName, Description, KeyPrefix
, LastModifiedBy.Name, LastModifiedDate
FROM EntityDefinition
WHERE KeyPrefix LIKE 'a%'
ORDER BY DeveloperName
CustomObject (Tooling API)
カスタムオブジェクトのみ取得できます。また、作成者(CreatedBy)、作成日時(CreatedDate)を取得できます。EntityDefinitionでは、標準オブジェクトも含むためか作成者と作成日時は取得できないため、取得したい場合はCustomeObjectを参照します。
SELECT Id, DeveloperName
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM CustomObject
ORDER BY DeveloperName
項目(カスタム項目)
FieldDefinition (Tooling API)
標準項目とカスタム項目が取得できます。
WHERE句の "EntityDefinition.DeveloperName IN..." の条件がない場合、全オブジェクトの項目を対象とし件数が多すぎてエラーとなる可能性があるため、確認したいオブジェクトを指定するのがよいです。
SELECT Id, EntityDefinition.QualifiedApiName, Label, DeveloperName
, QualifiedApiName, Description
, IsCalculated, DataType, Length
, LastModifiedBy.Name, LastModifiedDate
FROM FieldDefinition
WHERE EntityDefinition.DeveloperName IN ('AAA', 'BBB')
ORDER BY EntityDefinitionId, DeveloperName
CustomField (Tooling API)
カスタム項目のみ取得できます。また、作成者(CreatedBy)、作成日時(CreatedDate)を取得できます。
SELECT Id, EntityDefinition.QualifiedApiName, DeveloperName
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM CustomField
ORDER BY EntityDefinitionId, DeveloperName
ページレイアウト
Layout (Tooling API)
SELECT Id, EntityDefinition.QualifiedApiName, Name, LayoutType
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM Layout
ORDER BY EntityDefinitionId, Name
Lightning レコードページ
FlexiPage (Tooling API)
SELECT Id, EntityDefinition.QualifiedApiName, MasterLabel
, DeveloperName, Description
, CreatedDate, LastModifiedDate
FROM FlexiPage
WHERE Type = 'RecordPage'
ORDER BY EntityDefinitionId, MasterLabel
ボタンまたはリンク
WebLink (Tooling API)
SELECT Id, EntityDefinition.QualifiedApiName, Name, MasterLabel
, DisplayType, LinkType
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM WebLink
ORDER BY EntityDefinitionId, Name
コンパクトレイアウト
CompactLayout (Tooling API)
SELECT Id, SobjectType, MasterLabel, DeveloperName
, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM CompactLayout
ORDER BY SobjectType, MasterLabel
レコードタイプ
SELECT Id, SobjectType, Name, DeveloperName, IsActive
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM RecordType
ORDER BY SobjectType, Name
入力規則
ValidationRule (Tooling API)
SELECT Id, EntityDefinition.QualifiedApiName, ValidationName, Active
, ErrorMessage, ErrorDisplayField
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM ValidationRule
ORDER BY EntityDefinitionId, ValidationName
タブ
SELECT Id, SobjectName, Label, Name, IsCustom
FROM TabDefinition
WHERE IsCustom = true
ORDER BY Label
フロー
FlowDefinition (Tooling API)
SELECT Id, ActiveVersion.MasterLabel, ActiveVersion.VersionNumber, DeveloperName, Description
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM FlowDefinition
ORDER BY DeveloperName
ロール
SELECT Id, Name, DeveloperName, ParentRoleId, PortalType
, LastModifiedBy.Name, LastModifiedDate
FROM UserRole
ORDER BY ParentRoleId, DeveloperName
権限セット
SELECT Id, Label, Name, Type, Description, License.Name
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM PermissionSet
WHERE Type = 'Regular'
ORDER BY Label
権限セットグループ
SELECT Id, MasterLabel, DeveloperName, Description
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM PermissionSetGroup
ORDER BY MasterLabel
権限セットグループ内の権限セット
SELECT Id, PermissionSetGroup.MasterLabel, PermissionSet.Label
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM PermissionSetGroupComponent
ORDER BY PermissionSetGroupId, PermissionSetId
権限セット・権限セットグループへのユーザーの割り当て
PermissionSet.Typeが"Regular"のものが権限セットで、"Group"のものが権限セットグループです。
SELECT Id, PermissionSet.Type, PermissionSet.Label, PermissionSet.Name
, AssigneeId, Assignee.Name, IsActive, ExpirationDate
FROM PermissionSetAssignment
WHERE PermissionSet.Type IN ('Regular', 'Group')
メールテンプレート
SELECT Id, Name, DeveloperName, NamespacePrefix, Description
, TemplateType, TemplateStyle, Subject
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM EmailTemplate
グローバル選択リスト値セット
GlobalValueSet (Tooling API)
SELECT Id, MasterLabel, DeveloperName, Description
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM GlobalValueSet
ORDER BY DeveloperName
カスタム表示ラベル
ExternalString (Tooling API)
SELECT Id, Name, Value, Category
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM ExternalString
ORDER BY Name
Apexクラス
SELECT Id, Name, Status
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM ApexClass
ORDER BY Name
Apexトリガー
SELECT Id, Name, Status, IsValid, TableEnumOrId
, UsageBeforeInsert, UsageAfterInsert
, UsageBeforeUpdate, UsageAfterUpdate
, UsageBeforeDelete, UsageAfterDelete
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM ApexTrigger
ORDER BY Name
Apexジョブスケジュール
SELECT Id, CronJobDetail.Name, CronJobDetail.JobType, CronExpression
, State, StartTime, NextFireTime
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name
FROM CronTrigger
WHERE CronJobDetail.JobType = '7'
ORDER BY CronJobDetail.Name
LWC(Lightning Web Component)
SELECT Id, DeveloperName, Description, IsExposed
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM LightningComponentBundle
ORDER BY DeveloperName
おわりに
いかがでしたでしょうか。Salesforceの設定はたくさんあるので、その中の一部にはなりますが、確認用のSOQLのご紹介でした。
自分自身の備忘も兼ねた記事になっておりますが、似たような境遇にある方々のお役に立てば幸いです。
最後まで、ご覧いただきありがとうございました。