Skip to main content

グローバル変数と値を活用する

学習の目的

この単元を完了すると、次のことができるようになります。

  • Flow Builder で実行ユーザーの項目を参照する。
  • Flow Builder で実行ユーザーのロールとプロファイルを参照する。
  • Flow Builder でカスタム表示ラベルを参照する。
  • Flow Builder でカスタムメタデータを参照する。
メモ

このバッジは、Flow Builder のスキルを習得するための過程の一部です。「Flow Builder を使用したフローの作成」トレイルでは、初めから終わりまで Flow Builder について学習します。このトレイルで推奨されるバッジの順序に従えば、プロセスの自動化に関する確固たるスキルが身に付き、Flow Builder のエキスパートになります。

グローバル変数とは?

グローバル変数はすべてのフローに存在します。ユーザーが作成するものではなく、フロー内で値を変更することもできませんが、この変数によってフロー内で非常に有用なデータにアクセスできます。このデータはフローが実行されるたびに異なる可能性があります。

グローバル変数はリソースを選択できる項目で使用できます。そのような項目には通常、[値を入力するか、リソースを検索...] や [リソースを挿入...] といったプレースホルダーテキストが含まれています。 

テキストコンポーネントが表示されている [新規画面] フォーム。[デフォルト値] 項目に、グローバル変数の選択リストとその上にプレースホルダーテキスト [値を入力するか、リソースを検索...] が含まれている。

Flow Builder ではグローバル変数はオブジェクトや項目と似た動作をします。各グローバル変数には複数の値が含まれます。フロー内でグローバル変数を使用するには、次の手順を実行します。

  1. 要素の作成または編集中に、リソースを選択できる項目をクリックします。この項目に使用できるリソースが表示されます。
  2. [グローバル変数] の下で $ から始まる変数を選択します。選択した変数に使用できる項目が表示されます。
  3. 使用する値が含まれる項目を選択します。

    $Flow グローバル変数を選択すると、使用可能な項目のリストに CurrentDate、CurrentDateTime、InterviewStartTime が表示される。
メモ

グローバル変数項目のデータ型にはその項目のデータ型との互換性が必要であることに注意してください。たとえば、日時項目のデフォルト値を設定するには、日付または日時のグローバル変数項目を選択する必要があります。または、通貨項目の値を設定するには、数値または通貨のグローバル変数項目を選択する必要があります。

実行ユーザーの項目値を取得する

$User グローバル変数を使用すると、フローでユーザーの情報を取得できます。この変数によって、フローを実行したユーザーのユーザーデータにフロー内でアクセスできます。実行ユーザーの ID、名前、マネージャー ID、メールアドレスなどのデータにアクセスするには $User グローバル変数を使用します。

$User グローバル変数選択リストにはユーザーオブジェクトの項目が表示される。

Pyroclastic の営業マネージャーはチームメンバーが重要商談を不成立としてクローズしたときに知りたいと考えています。Flo は Chatter 投稿を使用して商談所有者のマネージャーへの通知を自動化することをあなたに任せました。商談をクローズするユーザーが商談の所有者ではない場合があるため、通知では誰が変更したかを示す必要があります。

商談の StageName が [Closed Lost] に変更された場合に実行されるフロー [Create Follow-Up with Decision Maker (意思決定者へのフォローアップの作成)] はすでにあります。そのフローに商談所有者のマネージャーへの Chatter 投稿を作成するアクションを追加します。

まず、所有者のマネージャーを特定する必要があります。単元 2 で行ったのと同じように、[レコードを取得] 要素を使用して情報を取得し、その情報を [アクション] 要素内で使用します。

所有者のマネージャーを取得する

  1. [Create Follow-Up with Decision Maker (意思決定者へのフォローアップの作成)] フローを開きます。
  2. フローキャンバスで、[Get Decision Maker (意思決定者を取得)] 要素の後の 要素を追加 にカーソルを合わせて 要素を追加 をクリックします。[レコードを取得] を選択します。
  3. [Label (表示ラベル)] に Get Owner Manager (所有者のマネージャーを取得) と入力します。
    この名前は生成された変数の表示ラベルに使用されるため、内容を示す名前にすることをお勧めします。
  4. [オブジェクト] で [ユーザー] を選択します。
  5. [条件の要件] で [すべての条件に一致 (AND)] を選択します。
  6. [レコードを絞り込む] セクションで、この要素で取得するレコードを指定する条件を定義します。
    • 項目: Id
    • 演算子: 次の文字列と一致する
    • 値: $Record > Owner > ManagerId
  7. [New Get Records (新規のレコードの取得)] パネルで をクリックしてパネルを閉じます。

前の手順に対応する [New Get Records (新規のレコードの取得)] パネル。

これで、商談所有者のマネージャーのすべての項目 (名前やメールアドレスなど) を含むレコード変数ができました。次は、アクション要素を使用して Chatter 投稿を作成します。

テキストテンプレートを作成する

  1. Flow Builder で、ツールボックスがまだ開いていない場合には ツールボックスを切り替え をクリックして開きます。
  2. [新規リソース] をクリックします。
  3. [リソース種別] で [テキストテンプレート] を選択します。
  4. [API 参照名] に「ChatterPostManager」と入力します。
  5. [Resource Picker (リソースピッカー)] 項目の横にある [View as Rich Text (リッチテキストとして表示)][View as Plain Text (プレーンテキストとして表示)] に変更します。
  6. [Resource Picker (リソースピッカー)] 項目で、[User from Get_Owner_Manager (Get_Owner_Manager ユーザー)] > [Id] を選択します。
    マネージャーの名前の差し込み項目がメッセージ本文の先頭に挿入されます。
  7. 次のように差し込み項目の周りに角括弧 [ ] を追加します。
    [{Get_Owner_Manager.Id}]
  8. 次のように先頭に @ 記号、末尾にコロンを追加します。
    @[{Get_Owner_Manager.Id}]:
    @ 記号の後に角括弧で囲まれた値が続くと、その値は Chatter 投稿内でメンションとして挿入されることに注意してください。
  9. コロンの後で改行し、次のように入力します。
    This opportunity was marked Closed Lost.
    Closed by:
    (この商談は [不成立] とマークされました。完了者:)
  10. スペースはそのまま残し、[グローバル変数] セクションにある $User グローバル変数を使用してさらに 3 個の差し込み項目を挿入します。一緒に実行されないように、間にスペースを追加します。
    • $User > FirstName
    • $User > LastName
    • $User > Email
  11. [完了] をクリックします。

次は、[アクション] 要素でテキストテンプレートを使用して商談の Chatter フィードに投稿します。

Chatter 投稿でマネージャーに通知する

  1. [Get Owner Manager (所有者のマネージャーを取得)] 要素の後の 要素を追加 にカーソルを合わせて、要素を追加 をクリックします。検索バーに post (投稿) と入力します。
  2. [Chatter に投稿] を選択します。
  3. [表示ラベル] で「Chatter Post to Manager」と入力します。
  4. [メッセージ] で [ChatterPostManager] テキストテンプレートを選択します。
  5. [対象名または ID] で [$Record > Id] を選択します。
  6. [完了] をクリックします。
  7. フローを保存します。

実行ユーザーのプロファイルとロールの値を取得する

フローを作成するときには、ID のハードコード化は避けます。ハードコード化とはフローやコードに Salesforce ID を手動で入力することです。たとえば、[レコードを更新] 要素で、「005i000006rZRFU」をチェックする条件を設定することはハードコード化です。そうするのではなく、[レコードを取得] 要素を使用して ID を取得し、[レコードを取得] 要素のレコード変数に保存された ID をチェックする必要があります。

メモ

なぜハードコード化を避けなければならないのでしょうか? Salesforce ID はいつでも変更される可能性があります。Sandbox 内でハードコード化された ID を使用してフローを作成すると、参照しようとしているレコードの ID が他の Sandbox や本番では異なる可能性があります。また、ID がどのレコードを表しているかがわかりにくいと、フローを理解したりトラブルシューティングを行ったりするのが困難になります。

これはグローバル変数にどのように関係するのでしょうか? どこかの時点で、ユーザーのプロファイルやロールにアクセスする必要があることがあります。あなたの組織が複数のテリトリーに分割されており、ユーザーロールとして営業担当に割り当てられているとします。西部テリトリー (Sales-West1、Sales-West2、Sales-West3) では他のテリトリーとは異なる割引計算を使用しています。割引を正しく計算するために、フローで実行ユーザーのロールを取得して、そのユーザーが西部テリトリーに割り当てられているかどうかを確認する必要があります。

Flo は $User グローバル変数を使用して実行ユーザーのロールを調べようとしますが、そこに含まれるロール値はロールの ID のみです。彼女は、フロー内で ID をハードコード化するべきではないことを知っています。幸い、実行ユーザーの情報にアクセスする別の方法があります。それが $UserRole グローバル変数です。この変数では実行ユーザーのロールの多数の値にアクセスできます。 

同じように、$Profile グローバル変数は、フローが実行ユーザーのプロファイルの値にアクセスする必要がある類似した状況で使用してください。$User の唯一のプロファイルの値はプロファイルの ID ですが、ロールの $UserRole と同じように、$Profile を使用するとプロファイルの残りの値にアクセスできます。

実行ユーザーのロールをチェックするときにハードコード化を避けるには、$UserRole > DeveloperName を参照します。プロファイルの場合、$Profile > Name を参照します。

[リソース] が [$UserRole > DeveloperName] に設定され、[演算子] が [次の文字列を含む] に設定され、[値] が「West」に設定されている [新規決定] ウィンドウの条件項目。

メモ

ユーザーが西部地域に割り当てられていることがわかった後に、Flo はフローで決定要素を使用して、他のテリトリーで使用される標準割引ではなく西部テリトリーの割引を適用できるようにします。決定要素については、「Flow Builder を使用したフローの作成」トレイルでこのバッジのすぐ後にある「Flow Builder のロジック」で学習します。ですから、あわてて先に進む必要はなく、まずこのバッジを完了すれば大丈夫です。

カスタム表示ラベルを取得する

組織のユーザーが複数の言語で作業している場合、カスタム表示ラベルが非常に役立ちます。カスタム表示ラベルには複数の言語に翻訳できるテキストの文字列が含まれています。翻訳を定義すると、各ユーザーにはユーザーのネイティブ言語でカスタム表示ラベルが表示されます。フローでもカスタム表示ラベルを使用できます。

Flow Builder で、テキストリソースを使用できる任意の場所 (画面コンポーネント、項目のデフォルト値、テキスト数式など) にカスタム表示ラベルを配置します。次の例では、ToDo レコードを作成していますが、[Subject] 項目が [TaskPrintLabels] グローバル変数に設定されています。ユーザーが ToDo を表示すると、その件名は各自の言語で表示されます。

前述の説明に対応するレコード作成ウィンドウ。

次の例は、フロー画面の [表示テキスト] コンポーネントです。[Resource Picker (リソースピッカー)] 項目では、$Label が選択されると、使用可能なカスタム表示ラベルがリストされます。いずれかを選択すると、それがコンポーネントのテキストエリアに追加されます。

前述の説明に対応する [新規画面] ウィンドウ。

その他の重要なグローバル変数

その他にもフローを作成するときに役立つグローバル変数がいくつかあります。

グローバル変数 実行する内容

$Flow.CurrentDate

要素が実行されている日付を取得する

$Flow.CurrentDateTime

要素が実行されている日時を取得する

$Flow.InterviewStartTime

フローの実行が最初に開始された日時を取得する

$Flow.FaultMessage

フローがエラーのために停止した場合にエラーメッセージを取得する

$Organization

[設定] の [組織情報] ページに表示される情報 (組織の名前や住所など) を取得する

$Record

レコードトリガーフローで、$Record を使用すると、フローをトリガーしたレコードのデータを取得できる。(ハンズオン Challenge では、このグローバル変数を使用して、新しく作成されたリードの会社と ID を取得しました。)

$Record を使用して次のこともできます。

  • フローをトリガーしたレコードのデータを更新する。
  • トリガーレコードに関連するレコードのグループを更新する。

$Record についての詳細は、「レコードトリガーフロー」バッジを参照してください。

カスタムメタデータ値を取得する

カスタムメタデータはグローバル変数ではありませんが、Flow Builder と Salesforce 組織全体でグローバルにアクセスできる値のセットです。たとえば、カスタムメタデータ型はフロー、コード、入力規則などで使用できます。

Flow Builder でカスタムメタデータを取得するには、オブジェクトレコードを取得する場合と同じように、[レコードを取得] 要素を使用します。オブジェクトを選択するときに、カスタムメタデータ型を選択します。

[新規のレコードの取得] ウィンドウで [オブジェクト] 項目から選択可能なオブジェクトのリスト。カスタムメタデータ型が強調表示されている。

メモ

カスタムメタデータ型を探す場合は、API 参照名の末尾に __mdt が付いている項目を探してください。

詳細とサンプルユースケースについては、Trailhead の「カスタムメタデータ型の基本」モジュールで、特に「フローでカスタムメタデータ型を使用する」単元を参照してください。

リソース

無料で学習を続けましょう!
続けるにはアカウントにサインアップしてください。
サインアップすると次のような機能が利用できるようになります。
  • 各自のキャリア目標に合わせてパーソナライズされたおすすめが表示される
  • ハンズオン Challenge やテストでスキルを練習できる
  • 進捗状況を追跡して上司と共有できる
  • メンターやキャリアチャンスと繋がることができる