Skip to main content

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

学習の目的

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

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

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

グローバル変数とは?

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

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

条件の要件を設定している [Get Records (レコードを取得)] パネル。[Value (値)] 項目に、グローバル変数の選択リストとその下にプレースホルダーテキスト [Search a field (項目を検索)] が含まれている。

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

  1. 要素の作成または編集中に、リソースを選択できる項目をクリックします。この項目に使用できるリソースが表示されます。
  2. [Global Variables (グローバル変数)] の下にある任意のオプションを選択します。選択した変数に使用できる項目が表示されます。
メモ

いくつかの要素では、グローバル変数の名前が異なり、$ から始まっています。ただし、それでも項目の [Global Variables (グローバル変数)] セクションにはあります。現在、Flow Builder の開発チームがすべての要素で同じ名前が付くように取り組んでいます。このプロセスが完了するまで、説明の中で使用する各グローバル変数には両方の名前を記載します。

  1. 使用する値が含まれる項目を選択します。
    [Running Flow Interview (実行中のフローインタビュー)] グローバル変数を選択すると、使用可能な項目のリストに CurrentDate、CurrentDateTime、InterviewStartTime が表示される。
メモ

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

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

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

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

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

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

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

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

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

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

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

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

  1. Flow Builder で、ツールボックスがまだ開いていない場合には ツールボックスを切り替え をクリックして開きます。
  2. [New Resource (新規リソース)] をクリックします。
  3. [リソース種別] で [テキストテンプレート] を選択します。
  4. [API Name (API 参照名)] に ChatterPostManager と入力します。
  5. [Resource Picker (リソースピッカー)] 項目の横にある [View as Rich Text (リッチテキストとして表示)][View as Plain Text (プレーンテキストとして表示)] に変更します。
  6. [Resource Picker (リソースピッカー)] 項目で、[User from Get Owner Manager (Get Owner Manager ユーザー)] > [User ID (ユーザー ID)] を選択します。
    マネージャーの名前の差し込み項目がメッセージ本文の先頭に挿入されます。
  7. 次のように差し込み項目の周りに角括弧 [ ] を追加します。
    [{Get_Owner_Manager.Id}]
  8. 次のように先頭に @ 記号、末尾にコロンを追加します。
    @[{Get_Owner_Manager.Id}]:
メモ

@ 記号の後に角括弧で囲まれた値が続くと、その値は Chatter 投稿内でメンションとして挿入されます。

  1. コロンの後で改行し、次のように入力します。
    This opportunity was marked Closed Lost.
    Closed by:
  2. スペースはそのまま残し、[Global Variables (グローバル変数)] セクションにある [Running User (実行ユーザー)] グローバル変数を使用してさらに 3 個の差し込み項目を挿入します。一緒に実行されないように、間にスペースを追加します。
    • Running User (実行ユーザー) > FirstName
    • Running User (実行ユーザー) > LastName
    • Running User (実行ユーザー) > Email
      前の手順に対応する [New Resource (新規リソース)] ウィンドウ。
  1. [Done (完了)] をクリックします。

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

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

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

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

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

メモ

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

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

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

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

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

[Resource (リソース)] が [Running User (実行ユーザー)] の [Role (ロール)] > [DeveloperName] に設定され、[Operator (演算子)] が [Contains (次の文字列を含む)] に設定され、[Value (値)] が「West」に設定されている [New Decision (新規決定)] ウィンドウの条件項目。

メモ

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

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

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

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

前述の説明に対応するレコード作成パネルのセクション。

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

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

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

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

グローバル変数

実行する内容

Running Flow Interview (実行中のフローインタビュー) > CurrentDate
(または $Flow.CurrentDate)

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

Running Flow Interview (実行中のフローインタビュー) > CurrentDateTime
(または $Flow.CurrentDateTime)

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

Running Flow Interview (実行中のフローインタビュー) > InterviewStartTime
(または $Flow.InterviewStartTime)

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

Running Flow Interview (実行中のフローインタビュー) > FaultMessage
(または $Flow.FaultMessage)

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

Running Org (実行組織)

(または $Organization)

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

Triggering (トリガー) <オブジェクト名>オブジェクト名>
(または $Record)

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

[Triggering (トリガー) <オブジェクト名>]オブジェクト名> を使用して、次のことも行えます。

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

[Triggering (トリガー) <オブジェクト名>]オブジェクト名> についての詳細は、「レコードトリガーフロー」バッジを参照してください。

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

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

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

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

メモ

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

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

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む