Administrator 練習問題 Q75
管理者は、連絡先を更新するためのレコードトリガーフローを作成しました。管理者は、フローをトリガーしたレコードの値をどのように参照する必要がありますか?
左の○で回答を選択。本文を押すと横線で除外でき、もう一度押すと戻せます。
1つ選択してください(0/1)
正答:C. $Recordグローバル変数を使用します。
解説
前提知識
レコードトリガーフロー
レコードが作成・更新・削除されたときに自動で起動するフローです。ボタンを押して実行する画面フローと違い、裏で黙って動きます。
起動レコード
フローを起動させたそのレコードのことです。今回なら、更新された連絡先レコードそのものです。
$Record グローバル変数
Salesforceが自動で用意してくれる変数で、起動レコードの値を保持しています。管理者が自分で作成する必要はありません。
Salesforce公式は、レコードトリガーフローでは$Recordグローバル変数がフローをトリガーしたレコードの値を保持し、フロー全体でその値を参照・変更できると説明しています。
項目を取り出すときは $Record.Email、$Record.AccountId のようにドットでつなげます。
グローバル変数とリソースの表記
フローの中で値を参照するときの表記には2種類あります。
| 表記 | 意味 |
|---|---|
$ で始まる | Salesforceが用意したグローバル変数($Record、$User、$Flow など) |
{!…} で囲む | 式やテキストの中にリソースの値を埋め込むときの記法 |
設問の状況を分解する
問われているのは「フローをトリガーしたレコードの値をどう参照するか」です。つまり、トリガーレコードの参照方法を聞いています。 ポイントは2つです。
- レコードトリガーフローなので、起動レコードはすでに手元にある。探しに行く必要がない
- それを取り出す専用の仕組みが
$Record「レコードトリガーフロー」と「起動レコード」がセットで出てきたら$Record、と覚えてください。
選択肢の検討
A. {!Contact.Id} グローバル変数を使用します
✕
Contact という名前のグローバル変数は存在しません。グローバル変数は $ で始まるのがルールで、$Record、$User、$Organization などがこれにあたります。オブジェクト名をそのまま書いても参照にはなりません。
B. {!Account.Id} レコード変数を使用します
✕ 二重に誤りです。そもそも更新対象は連絡先なのに、参照先が取引先になっています。またレコード変数は使うなら管理者が自分で作成して値を入れる必要があり、作っただけでは中身は空です。
C. $Record グローバル変数を使用します
⭕ 正解 レコードトリガーフローで起動レコードを参照する、公式の標準手段です。追加の設定は不要で、フローをレコードトリガー型で作った時点で自動的に使えるようになります。
D. GetRecords要素を使用してIDを検索します
△(惜しいが不正解)
条件に合うレコードを取得する用途の要素ですが、この設問では不要です。トリガーレコードの値はすでに$Recordに格納されているため、同じレコードを取得し直す必要はありません。
管理者としての対処手順
- [設定]→[フロー]→[新規フロー]で[レコードトリガーフロー]を選択する
- オブジェクトに[連絡先]、トリガーを[レコードが更新されたとき]に設定する
- 実行タイミングを選ぶ(同じレコードの項目を更新するだけなら[保存前]が高速)
- 条件や値の参照に
$Record.項目名を使う(例:$Record.MailingCity) - [保存前]の場合は[割り当て]要素を使用して
$Recordの対象項目に値を設定する。変更値は保存時に自動適用されるため、[レコードを更新]要素は不要 - デバッグでテストレコードを指定し、意図した値が取得・更新されているか確認する
あわせて覚えておきたいポイント
- 更新前の値を参照したいときは
$Record__Priorを使います。「金額が増えたときだけ実行」といった判定に使えます。 - [保存前]のフローで同じレコードの項目を更新する場合、[レコードを更新]要素すら不要です。
$Recordの項目に代入するだけで保存に反映されます。 - Salesforce公式は、他レコードから導出される項目の値は
$Recordに含まれないと注意しています。必要な関連レコードの値が得られない場合は、[レコードを取得]要素などで明示的に取得します。 $Recordはレコードトリガーフローとスケジュールトリガーフローで利用できます。画面フローなど、トリガーレコードを持たないフローでは、必要なレコードIDを入力変数で受け取るか[レコードを取得]要素を使用します。
出典(Salesforce公式)
- Working with the Triggering Record in Record-Triggered Flows — Salesforceがトリガーレコードの値を
$Recordへ自動格納すること、保存前フローでは[割り当て]要素で$Recordの項目値を変更すると自動保存されることを裏付ける - Global Variables Resource —
$Recordの利用可能なフロー種別、保存前と保存後での更新方法、$Record__Priorで更新前の値を参照できること、および他レコードから導出される一部項目値が含まれないことを裏付ける - Before-Save Record-Triggered Flows — トリガーレコードを取得するための[レコードを取得]要素や保存するための[レコードを更新]要素が不要で、[割り当て]要素で変更できることを裏付ける