グローバル変数と値を活用する
学習の目的
この単元を完了すると、次のことができるようになります。
- Flow Builder で実行ユーザーの項目を参照する。
- Flow Builder で実行ユーザーのロールとプロファイルを参照する。
- Flow Builder でカスタム表示ラベルを参照する。
- Flow Builder でカスタムメタデータを参照する。
グローバル変数とは?
グローバル変数はすべてのフローに存在します。ユーザーが作成するものではなく、フロー内で値を変更することもできませんが、この変数によってフロー内で非常に有用なデータにアクセスできます。このデータはフローが実行されるたびに異なる可能性があります。
グローバル変数はリソースを選択できる項目で使用できます。そのような項目には通常、[値を入力するか、リソースを検索...] や [リソースを挿入...] といったプレースホルダーテキストが含まれています。
Flow Builder ではグローバル変数はオブジェクトや項目と似た動作をします。各グローバル変数には複数の値が含まれます。フロー内でグローバル変数を使用するには、次の手順を実行します。
- 要素の作成または編集中に、リソースを選択できる項目をクリックします。この項目に使用できるリソースが表示されます。
- [グローバル変数] の下で $ から始まる変数を選択します。選択した変数に使用できる項目が表示されます。
- 使用する値が含まれる項目を選択します。
実行ユーザーの項目値を取得する
$User グローバル変数 (または一部の要素では [Running User (実行ユーザー)] グローバル変数) を使用すると、フローでユーザーの情報を取得できます。この変数によって、フローを実行したユーザーのユーザーデータにフロー内でアクセスできます。実行ユーザーの ID、名前、マネージャー ID、メールアドレスなどのデータにアクセスするには $User グローバル変数を使用します。
Pyroclastic の営業マネージャーはチームメンバーが重要商談を不成立としてクローズしたときに知りたいと考えています。Flo は Chatter 投稿を使用して商談所有者のマネージャーへの通知を自動化することをあなたに任せました。商談をクローズするユーザーが商談の所有者ではない場合があるため、通知では誰が変更したかを示す必要があります。
商談の StageName が [Closed Lost] に変更された場合に実行されるフロー [Create Follow-Up with Decision Maker (意思決定者へのフォローアップの作成)] はすでにあります。そのフローに商談所有者のマネージャーへの Chatter 投稿を作成するアクションを追加します。
まず、所有者のマネージャーを特定する必要があります。単元 2 で行ったのと同じように、[Get Records (レコードを取得)] 要素を使用して情報を取得し、その情報を [Action (アクション) 要素内で使用します。
所有者のマネージャーを取得する
- [Create Follow-Up with Decision Maker (意思決定者へのフォローアップの作成)] フローを開きます。
- フローキャンバスで、[Get Decision Maker (意思決定者を取得)] 要素の後で をクリックします。[Get Records (レコードを取得)] を選択します。
- [Label (表示ラベル)] に
Get Owner Manager
(所有者のマネージャーを取得) と入力します。
この名前は生成された変数の表示ラベルに使用されるため、内容を示す名前にすることをお勧めします。
- [オブジェクト] で [ユーザー] を選択します。
- [Condition Requirements (条件の要件)] で [All Conditions Are Met (AND) (すべての条件に一致 (AND))] を選択します。
-
[レコードを絞り込む] セクションで、この要素で取得するレコードを指定する条件を定義します。
- Field (項目): Id
- Operator (演算子): Equals (次の文字列と一致する)
- Value (値): $Record> Owner> ManagerId
- [New Get Records (新規のレコードの取得)] パネルで をクリックしてパネルを閉じます。
これで、商談所有者のマネージャーのすべての項目 (名前やメールアドレスなど) を含むレコード変数ができました。次は、アクション要素を使用して Chatter 投稿を作成します。
テキストテンプレートを作成する
- Flow Builder で、ツールボックスがまだ開いていない場合には をクリックして開きます。
-
[New Resource (新規リソース)] をクリックします。
- [リソース種別] で [テキストテンプレート] を選択します。
- [API Name (API 参照名)] に
ChatterPostManager
と入力します。
- [Resource Picker (リソースピッカー)] 項目の横にある [View as Rich Text (リッチテキストとして表示)] を [View as Plain Text (プレーンテキストとして表示)] に変更します。
- [Resource Picker (リソースピッカー)] 項目で、[User from Get_Owner_Manager (Get_Owner_Manager ユーザー)] > [Id] を選択します。
マネージャーの名前の差し込み項目がメッセージ本文の先頭に挿入されます。
- 次のように差し込み項目の周りに角括弧 [ ] を追加します。
[{Get_Owner_Manager.Id}]
- 次のように先頭に @ 記号、末尾にコロンを追加します。
@[{Get_Owner_Manager.Id}]:
- コロンの後で改行し、次のように入力します。
This opportunity was marked Closed Lost. Closed by:
- スペースはそのまま残し、[グローバル変数] セクションにある $User グローバル変数を使用してさらに 3 個の差し込み項目を挿入します。一緒に実行されないように、間にスペースを追加します。
-
$User> FirstName
-
$User> LastName
-
[$User] > [Email (メール)]
[代替テキスト: これまでのステップに対応した [New Resource (新規リソース)] ウィンドウ。]
-
[Done (完了)] をクリックします。
次は、[Action (アクション) 要素でテキストテンプレートを使用して商談の Chatter フィードに投稿します。
Chatter 投稿でマネージャーに通知する
- [Get Owner Manager (所有者のマネージャーを取得)] 要素の後で をクリックします。検索バーに
post
(投稿) と入力します。
-
[Chatter に投稿] を選択します。
- [Label (表示ラベル)] で
Chatter Post to Manager
(マネージャーへの Chatter 投稿) と入力します。
- [メッセージ] で [ChatterPostManager] テキストテンプレートを選択します。
- [Target Name or ID (対象名または ID)] で、[Triggering Opportunity (トリガー商談)] > [Owner ID (所有者 ID)] を選択します。
-
[Done (完了)] をクリックします。
- フローを保存します。
実行ユーザーのプロファイルとロールの値を取得する
フローを作成するときには、ID のハードコード化は避けます。ハードコード化とはフローやコードに Salesforce ID を手動で入力することです。たとえば、[レコードを更新] 要素で、「005i000006rZRFU」をチェックする条件を設定することはハードコード化です。そうするのではなく、[Get Records (レコードを取得)] 要素を使用して ID を取得し、[Get Records (レコードを取得)] 要素のレコード変数に保存された ID をチェックする必要があります。
これはグローバル変数にどのように関係するのでしょうか? どこかの時点で、ユーザーのプロファイルやロールにアクセスする必要があることがあります。あなたの組織が複数のテリトリーに分割されており、ユーザーロールとして営業担当に割り当てられているとします。西部テリトリー (Sales-West1、Sales-West2、Sales-West3) では他のテリトリーとは異なる割引計算を使用しています。割引を正しく計算するために、フローで実行ユーザーのロールを取得して、そのユーザーが西部テリトリーに割り当てられているかどうかを確認する必要があります。
Flo は $User グローバル変数を使用して実行ユーザーのロールを調べようとしますが、そこに含まれるロール値はロールの ID のみです。彼女は、フロー内で ID をハードコード化するべきではないことを知っています。幸い、実行ユーザーロールの情報にアクセスする別の方法があります。それが $UserRole グローバル変数 (または一部の要素では [Running User Role (実行ユーザーロール)] グローバル変数) です。この変数では実行ユーザーのロールの多数の値にアクセスできます。
同じように、$Profile グローバル変数 (または一部の要素では [Running User Profile (実行ユーザープロファイル)] グローバル変数) は、フローが実行ユーザーのプロファイルの値にアクセスする必要がある類似した状況で使用してください。$User の唯一のプロファイルの値はプロファイルの ID ですが、ロールの $UserRole と同じように、$Profile を使用するとプロファイルの残りの値にアクセスできます。
実行ユーザーのロールをチェックするときにハードコード化を避けるには、$UserRole > DeveloperName を参照します。プロファイルの場合、$Profile > Name を参照します。
カスタム表示ラベルを取得する
組織のユーザーが複数の言語で作業している場合、カスタム表示ラベルが非常に役立ちます。カスタム表示ラベルには複数の言語に翻訳できるテキストの文字列が含まれています。翻訳を定義すると、各ユーザーにはユーザーのネイティブ言語でカスタム表示ラベルが表示されます。フローでもカスタム表示ラベルを使用できます。
Flow Builder で、$Label グローバル変数 (または一部の要素では [Custom Label (カスタム表示ラベル)] グローバル変数) を使用して、テキストリソースを使用できる任意の場所 (画面コンポーネント、項目のデフォルト値、テキスト数式など) にカスタム表示ラベルを配置します。次の例では、ToDo レコードを作成していますが、[Subject] 項目が [TaskPrintLabels] グローバル変数に設定されています。ユーザーが ToDo を表示すると、その件名は各自の言語で表示されます。
次の例は、フロー画面の [表示テキスト] コンポーネントです。[Resource Picker (リソースピッカー)] 項目では、$Label が選択されると、使用可能なカスタム表示ラベルがリストされます。いずれかを選択すると、それがコンポーネントのテキストエリアに追加されます。
その他の重要なグローバル変数
その他にもフローを作成するときに役立つグローバル変数がいくつかあります。
グローバル変数 |
実行する内容 |
---|---|
$Flow.CurrentDate (または [Running Flow Interview (実行中のフローインタビュー)] > [CurrentDate])
|
要素が実行されている日付を取得する |
$Flow.CurrentDateTime (または [Running Flow Interview (実行中のフローインタビュー)] > [CurrentDateTime])
|
要素が実行されている日時を取得する |
$Flow.InterviewStartTime (または [Running Flow Interview (実行中のフローインタビュー)] > [InterviewStartTime])
|
フローの実行が最初に開始された日時を取得する |
$Flow.FaultMessage (または [Running Flow Interview (実行中のフローインタビュー)] > [FaultMessage])
|
フローがエラーのために停止した場合にエラーメッセージを取得する |
$Organization (または [Running Org (実行組織)])
|
[Setup (設定)] の [Company Information (組織情報)] ページに表示される情報 (組織の名前や住所など) を取得する |
$Record (または [Triggering
|
レコードトリガーフローで、$Record を使用すると、フローをトリガーしたレコードのデータを取得できる。(ハンズオン Challenge では、このグローバル変数を使用して、新しく作成されたリードの会社と ID を取得しました。) $Record を使用して次のこともできます。
$Record についての詳細は、「レコードトリガーフロー」バッジを参照してください。 |
カスタムメタデータ値を取得する
カスタムメタデータはグローバル変数ではありませんが、Flow Builder と Salesforce 組織全体でグローバルにアクセスできる値のセットです。たとえば、カスタムメタデータ型はフロー、コード、入力規則などで使用できます。
Flow Builder でカスタムメタデータを取得するには、オブジェクトレコードを取得する場合と同じように、[Get Records (レコードを取得)] 要素を使用します。オブジェクトを選択するときに、カスタムメタデータ型を選択します。
詳細とサンプルユースケースについては、Trailhead の「カスタムメタデータ型の基本」モジュールで、特に「フローでカスタムメタデータ型を使用する」単元を参照してください。
リソース
- Salesforce Admins ブログ: Why You Should Avoid Hard Coding and Three Alternative Solutions (ハードコード化を避けるべき理由と 3 つの代替ソリューション)
- Salesforce Admins Automate This! 動画: Automate This! — Send Case Notifications Automagically with Flow (Automate This! — フローを使用して自動的にケース通知を送信する)
- Trailhead: カスタムメタデータ型の基本