LoginSignup
9
6

More than 1 year has passed since last update.

これはなに?

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

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6