見出し画像

【Salesforce】Salesforceの設定を確認するSOQL

はじめに

こんにちは。CREFILでエンジニアをしている松井です。

この記事では、Salesforceの設定を確認するために、SOQLで取得する方法をご紹介します。


Salesforceの設定の確認

Salesforceの設定を確認する方法としては、次のような方法があります。

  1. 画面から確認する。

  2. メタデータAPIで取得して確認する。

  3. 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実行ツールでも、おそらく同様の設定があると思います。

オブジェクト(カスタムオブジェクト)

WHERE句の "KeyPrefix LIKE 'a%" はカスタムオブジェクトのみを対象する条件です。この条件を削除すると、標準オブジェクトも取得できます。

SELECT Id, Label, DeveloperName, QualifiedApiName, Description, KeyPrefix
, LastModifiedBy.Name, LastModifiedDate
FROM EntityDefinition
WHERE KeyPrefix LIKE 'a%'
ORDER BY DeveloperName

カスタムオブジェクトのみ取得できます。また、作成者(CreatedBy)、作成日時(CreatedDate)を取得できます。EntityDefinitionでは、標準オブジェクトも含むためか作成者と作成日時は取得できないため、取得したい場合はCustomeObjectを参照します。

SELECT Id, DeveloperName
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM CustomObject
ORDER BY DeveloperName

項目(カスタム項目)

標準項目とカスタム項目が取得できます。

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

カスタム項目のみ取得できます。また、作成者(CreatedBy)、作成日時(CreatedDate)を取得できます。

SELECT Id, EntityDefinition.QualifiedApiName, DeveloperName
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM CustomField
ORDER BY EntityDefinitionId, DeveloperName

ページレイアウト

SELECT Id, EntityDefinition.QualifiedApiName, Name, LayoutType
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM Layout
ORDER BY EntityDefinitionId, Name

Lightning レコードページ

SELECT Id, EntityDefinition.QualifiedApiName, MasterLabel
, DeveloperName, Description
, CreatedDate, LastModifiedDate
FROM FlexiPage
WHERE Type = 'RecordPage'
ORDER BY EntityDefinitionId, MasterLabel

ボタンまたはリンク

SELECT Id, EntityDefinition.QualifiedApiName, Name, MasterLabel
, DisplayType, LinkType
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM WebLink
ORDER BY EntityDefinitionId, Name

コンパクトレイアウト

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

入力規則

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

フロー

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

グローバル選択リスト値セット

SELECT Id, MasterLabel, DeveloperName, Description
, CreatedBy.Name, CreatedDate, LastModifiedBy.Name, LastModifiedDate
FROM GlobalValueSet
ORDER BY DeveloperName

カスタム表示ラベル

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のご紹介でした。

自分自身の備忘も兼ねた記事になっておりますが、似たような境遇にある方々のお役に立てば幸いです。

最後まで、ご覧いただきありがとうございました。

この記事が参加している募集