これはなに?
- 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も開発時に便利だよ!等の情報もお待ちしております。