子育てエンジニアブログ

子育てに励むシステムエンジニア(SE)のブログ

【Salesforce】便利そうなSOQLについて

便利そうなSOQLについてこちらに書いてみようと思います。

共通事項として項目名の指定がめんどくさいときは下記のようにすれば、指定せずに取れる。
ただし、画面がすごいことになる。
FIELDS(ALL) オブジェクトのすべての項目を選択
FIELDS(CUSTOM) オブジェクトのすべてのカスタム項目を選択
FIELDS(STANDARD) オブジェクトのすべての標準項目を選択

・ユーザIDとユーザ名とその他ライセンスの情報とかの一覧を出す

Select Name, id,Department,IsActive,UserPermissionsSupportUser,Profile.Name,Profile.UserLicense.Name,Profile.UserLicense.LicenseDefinitionKey,Profile.UserLicense.TotalLicenses,Profile.UserLicense.UsedLicenses,Profile.UserLicense.status
From User ORDER BY Department,Name 

・組織のオブジェクトのAPI名の一覧を出す

SELECT QualifiedApiName FROM EntityDefinition order by QualifiedApiName

・特定のオブジェクトのフィールド名の一覧を出す

SELECT Label, QualifiedApiName FROM FieldDefinition WHERE EntityDefinition.QualifiedApiName = '{オブジェクト名}'

・特定のユーザーに割り当てられた権限セットを出すクエリ

SELECT Id, PermissionSetId, PermissionSet.Name, PermissionSet.ProfileId, PermissionSet.Profile.Name, AssigneeId, Assignee.Name FROM PermissionSetAssignment WHERE Assignee.Name = '{ユーザ名}'

・特定のユーザーが特定のレコードにアクセスできるか確認するクエリ(UserRecordAccessをSELECTするときはレコードIDとユーザIDが必要みたい)
HasReadAccess:参照アクセス権がある
HasEditAccess:編集アクセス権がある
HasDeleteAccess:削除アクセス権がある
HasTransferAccess:転送アクセス権がある
HasAllAccess:すべてのアクセス権がある
MaxAccessLevel:最大アクセスレベル

SELECT RecordId,MaxAccessLevel,HasAllAccess, HasDeleteAccess, HasEditAccess,HasReadAccess, HasTransferAccess FROM UserRecordAccess  WHERE UserId = '{ユーザID}'  AND RecordId = '{レコードID}'

・ユーザーに紐付くロール名を取得する

SELECT Id, userRole.Name, Name FROM User WHERE Id='{ユーザID}'