これはなに?
- Salesforceで日々〇〇どこだっけ?となった際の備忘録です。誰かの役に立てればと思い書かせていただきます。
1. 組織情報を取得する
SELECT Id, IsSandbox, OrganizationType FROM Organization LIMIT 1
項目 | 説明 |
---|---|
Id | 組織ID |
IsSandbox | sandbox(TRUE) |
OrganizationType | 組織のエディション情報 |
2. レコードタイプ情報を取得する
SELECT Id, Name, DeveloperName, SobjectType, IsActive
FROM RecordType
項目 | 説明 |
---|---|
Id | レコードタイプID |
Name | レコードタイプ表示ラベル |
DeveloperName | レコードタイプAPI参照名 |
SobjectType | レコードタイプに対応したオブジェクト名 |
IsActive | 有効(TRUE) |
3. レコードタイプで絞り込む
もちろんレコードタイプIDそのままでも絞り込めますが、
SELECT Id, Name FROM Account WHERE RecordTypeId = '0xxxxxxxxxx'
レコードタイプのAPI参照名で絞り込み
SELECT Id, Name FROM Account WHERE RecordType.DeveloperName = 'DeveloperName'
レコードタイプの表示ラベルで絞り込み
SELECT Id, Name FROM Account WHERE RecordType.Name = 'Name'
レコードタイプの表示ラベルが 01_〇〇企業
となっている場合に、部分一致検索もできるので便利です。
SELECT Id, Name FROM Account WHERE RecordType.Name LIKE '%01_%'
項目 | 説明 |
---|---|
RecordTypeId | レコードタイプID |
RecordType.Name | レコードタイプ表示ラベル |
RecordType.DeveloperName | レコードタイプAPI参照名 |
4. キューの情報を取得する
SELECT Name, DeveloperName FROM Group WHERE Type = 'Queue'
項目 | 説明 |
---|---|
Name | キュー表示ラベル |
DeveloperName | キューAPI参照名 |
5. 選択リストの情報を取得する
1. FieldDefinition
から取得したい選択リストのDurableId
を取得
SELECT DurableId
FROM FieldDefinition
WHERE EntityDefinition.DeveloperName='Account'
AND QualifiedAPIName = 'Industry'
項目 | 説明 |
---|---|
DurableId | 項目につけられた一意の識別子 |
EntityDefinition.DeveloperName | オブジェクトAPI参照名 |
DeveloperName | 選択リストのAPI参照名 |
2. PicklistValueInfo
から選択リストを取得
EntityParticleIdを条件に追加し、FieldDefinition
から取得したDurableIdでフィルターをかけます
標準のAccountのIndustry項目のDurableIdは'Account.Industry'
なので以下のように実行すると取得できます。
SELECT Value, Label
FROM PicklistValueInfo
WHERE EntityParticleId = 'Account.Industry'
項目 | 説明 |
---|---|
Value | 選択リスト値のAPI参照名 |
Label | 選択リスト値の表示ラベル |
EntityParticleId | FieldDefinitionから取得した、DurableId |
6. 特定のオブジェクトの項目情報取得
SELECT DeveloperName, Label, DataType,
LastModifiedDate
FROM FieldDefinition
WHERE EntityDefinition.DeveloperName = 'ObjectName'
項目 | 説明 |
---|---|
DeveloperName | 項目のAPI参照名 |
Label | 項目の表示ラベル |
DataType | データ型 |
LastModifiedDate | 項目定義最終更新日時 |
EntityDefinition.DeveloperName | オブジェクトAPI参照名 |
7. スケジュール済みのJOBを取得
SELECT State, Id, StartTime, EndTime, CronExpression,
CronJobDetail.Name, NextFireTime,
PreviousFireTime
FROM CronTrigger
WHERE CronJobDetail.JobType = '7'
項目 | 説明 |
---|---|
State | ジョブの現在の状況 |
Id | スケジュール済みJOB ID |
StartTime | ジョブの開始日時 |
EndTime | ジョブの終了日時 |
CronExpression | スケジュール cron 定義 |
CronJobDetail.Name | スケジュール済みジョブの名前 |
CronJobDetail.JobType | スケジュール済みジョブの種別 |
NextFireTime | 次に実行される予定の日時 |
PreviousFireTime | 最近ジョブを実行した日時 |
JobType
1 — データのエクスポート
3 — ダッシュボードの更新
4 — レポート作成スナップショット
6 — Scheduler フロー
7 — スケジュール済みの Apex
8 — レポート実行
9 — 一括処理ジョブ
A — レポート通知
State
WAITING — ジョブは実行待ちです。
ACQUIRED — ジョブはシステムによって選択され、まもなく実行されます。
EXECUTING — ジョブは実行中です。
COMPLETE — トリガは起動済みです。再度起動するようにスケジュールされていません。
ERROR — トリガ定義にエラーがあります。
DELETED — ジョブは削除されました。
PAUSED — パッチおよびメジャーリリース時にジョブがこの状況になる可能性があります。リリースが終了すると、ジョブの状況は自動的に WAITING または他の状況に設定されます。
BLOCKED — ジョブの 1 つのインスタンスを実行中に、2 つ目のインスタンスの実行が試行されています。この状況は、最初のジョブインスタンスが完了するまで続きます。
PAUSED_BLOCKED — リリースが行われているため、ジョブはこの状況になっています。リリースが終了し、実行中のジョブのインスタンスが他になければ、ジョブの状況は別の状況に設定されます。
8. Apexのテスト結果を取得
SELECT Id,
ApexClass.Name, MethodName, Message, Outcome
FROM ApexTestResult
項目 | 説明 |
---|---|
Id | テスト結果 ID |
ApexClass.Name | ジョブの開始日時 |
MethodName | テストメソッド名 |
Message | テスト失敗が発生した場合の例外エラーメッセージ |
Outcome | テストメソッドの実行結果 (Pass Fail CompileFail Skip) |
9. レコードトリガーフローを取得する
SELECT ApiName, TriggerType, Label, Description, IsActive
FROM FlowDefinitionView
WHERE TriggerType = 'RecordAfterSave'
OR TriggerType = 'RecordBeforeSave'
項目 | 説明 |
---|---|
ApiName | フロー定義の API 参照名 |
TriggerType | フローを実行するトリガ種別 |
Label | フロー定義の表示ラベル |
Description | フロー定義情報 |
IsActive | 有効(TRUE) |
TriggerType
EventDrivenJourney — 将来の使用のために予約されています。
PlatformEvent — フローは、プラットフォームイベントメッセージを受信すると開始されます。この値は API バージョン 49.0 以降で使用できます。
RecordAfterSave — フローは、レコードの保存後に開始されます。この値は API バージョン 49.0 以降で使用できます。
RecordBeforeSave — レコードの作成または更新により自動起動フローをトリガし、追加の更新をレコードに加えてからレコードをデータベースに保存します。この値は API バージョン 48.0 以降で使用できます。
Scheduled — スケジュールされた時刻にフローが開始されます。この値は API バージョン 47.0 以降で使用できます。
processType が AutoLaunchedFlow の場合にのみ使用できます。この項目は、API バージョン 47.0 以降で使用できます。
10. 日付関数/日付リテラルを使って絞り込み
CALENDAR_YEAR(CreatedDate)
で作成日の年の部分が取得できるので、
年単位での集約やフィルタリングが可能になります。
他にもCALENDAR_QUARTER()
という四半期を表すものや、WEEK_IN_MONTH()
で月の何週目かを表したりなど
便利です。
SELECT CreatedDate, Amount
FROM Opportunity
WHERE CALENDAR_YEAR(CreatedDate) = 2022
CreatedDate=THIS_WEEK
で今週作成されたデータとなります。
他にもLAST_WEEK
LAST_MONTH
など実行日を基準に日付データをフィルタリングできるものになってます。
SELECT Id, Name FROM Opportunity WHERE CreatedDate = THIS_WEEK
最後に
最後まで読んでいただき
ありがとうございます。
Salesforce関連のことに関してまだまだですので、
こっちのSOQLも開発時に便利だよ!等の情報もお待ちしております。