Skip to main content

画面にさらなるオプションを追加する

学習の目的

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

  • データテーブルを使用してユーザーに選択肢の詳細を表示する。
  • フロー画面に直接レコード項目を配置する。
  • フロー画面に参照項目を配置する。
  • ユーザーがファイルをアップロードできる画面を作成する。
メモ

メモ

日本語で受講されている方へ
このバッジの Trailhead ハンズオン Challenge は英語で受講していただく必要があります。英語の意味についてはかっこ内の翻訳をご参照ください。Trailhead Playground では (1) [Locale (地域)] を [United States (米国)] に、[Language (言語)] を [English (英語)] に切り替えて、(2) 英語の値のみをコピーして貼り付けてください。こちらの指示に従ってください。

翻訳版の Trailhead を活用する方法については、自分の言語の Trailhead バッジをご覧ください。

メモ

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

始める前に

この単元の演習には、追加のカスタム項目が必要です。ケースオブジェクトにカスタム項目を作成して、以下の詳細を設定します。

  • データ型: 参照関係
  • 関連先: ユーザー
  • 項目の表示ラベル: QA Reviewer (QA レビュー担当者)
  • 項目名: QA_Reviewer
  • 他の設定はすべてデフォルト値を維持

ユーザーが情報に基づいて選択できるようにする

Pyroclastic のサポートチームから Flo のところに、[Create Case for Contact (取引先責任者のケースを作成)] フローに関するさらなるフィードバックが届きました。まず、質問を更新して、サポートエージェントが取引先責任者レコードを選択しやすくして欲しいということです。次に、原因と関連取引先をキャプチャする質問を追加することを望んでいます。

ユーザーがレコードの中から 1 つ選択する際、レコード名以上の情報を求めることがよくあります。サポートエージェントがケースの最適な連絡窓口を選択するためには、取引先責任者に関するさらなる情報が必要です。具体的には次の情報を求めています。 

  • 役職: 問題に対処する適切なロールであることを確認する。
  • メール: サポートエージェントがフォローアップに使用する。
  • 電話番号: サポートエージェントがフォローアップに使用する。

ユーザーがレコードを選択できるだけの情報を提示するために、データテーブルコンポーネントを使用します。このコンポーネントはテーブル形式で、各行にレコード、各列にレコードの項目が表示されます。

実行中のユーザーに表示されるデータテーブルコンポーネント。行に取引先責任者、列に役職、メール、会社電話が示されています。

データテーブルコンポーネントを追加する

  1. [Create Case for Contact (取引先責任者のケースを作成)] フローを開きます。
  2. [Create Case (ケースを作成)] 要素の 削除 をクリックして、[ContactId] > [Point_of_Contact] 行を削除します。
  3. [質問] 要素の前に、取引先の取引先責任者を取得する [レコードを取得] 要素を追加します。
    1. 表示ラベル: Get Contacts (取引先責任者を取得)
    2. オブジェクト: 取引先責任者
    3. 条件の要件: [すべての条件に一致 (AND)]
    4. 条件: [AccountId] [次の文字列と一致する] [inputAccountId]
    5. 保存するレコード数: すべてのレコード
  4. [Questions Page 2 (質問ページ 2)] を開き、削除 をクリックして [Point_of_Contact] コンポーネントを削除します。
  5. [データテーブル] コンポーネントを追加して、ユーザーが適切な取引先責任者を選択できるようにします。
    1. [コンポーネント] サイドバーから [データテーブル] を画面キャンバスにドラッグします。
    2. [API 参照名] に、PointOfContact と入力します。
    3. [表示ラベル] に、Point of Contact (連絡窓口) と入力します。
    4. [テーブルのタイトルとして表示ラベルを使用] を選択します。
    5. [ソースコレクション] で [Get_Contact の取引先責任者] を選択します。
    6. [行の設定] をクリックしてセクションを開きます。
    7. [Row Selection Mode (行選択モード)] で [Single (単一)] を選択します。

      メモ: [Row Selection Mode (行選択モード)] には他に [Multiple (複数)] と [View Only (参照のみ)] の 2 つのオプションがあります。[複数] オプションでは、ユーザーが複数のレコードを選択して、レコードコレクション変数に保存できます。[参照のみ] オプションの場合は、レコードが表示されるのみで、ユーザーが選択することはできません。[参照のみ] はフロー内にレコードのリストを表示するために使用し、ユーザーが必要な情報を確認するためにフローを離れなくて済むようにします。
       
    8. [ユーザーが選択することを必須にする] を選択します。
    9. [列の設定] をクリックしてセクションを開きます。
    10. [ソース項目] で [名前] (氏名) を選択します。
    11. [Done (完了)] をクリックしますが、ここでクリックするのは [Column Options (列オプション)] の [Done (完了)] で、[Edit Screen (画面を編集)] ウィンドウの一番下にあるものではない点に注意します。

      [列の設定] セクションにある [完了] をクリック。
    12. [+Add Column (+列を追加)] をクリックして、ステップ j ~ k を繰り返し、[Title (役職)]、[Email (メール)]、[Phone (電話)] (会社電話) の各項目に列を追加します。

      上記の手順に対応する、[データテーブル] サイドバーの [列の設定] セクション。
  6. [完了] をクリックして、[Questions Page 2 (質問ページ 2)] 要素を閉じます。

最小限の設定で既存の項目をすばやく追加する

オブジェクトの項目を画面フローに効率よく追加する方法は、レコード項目コンポーネントを使用することです。(この機能はフローの動的フォームと呼ばれていました。)レコード項目コンポーネントは、Salesforce オブジェクトの項目とよく似ています。レコード項目コンポーネントを使用する場合は、オブジェクトを表すレコード変数を選択して、画面キャンバスに項目を好きなだけドラッグします。5 個でも、10 個でも、それ以上でも、画面に項目をすぐさま追加できます!

それほど優れた機能ならば、なぜ今まで言及されなかったのでしょうか? その理由は、一定の制限があるからです。レコード項目コンポーネントはそれぞれ、表示ラベル、選択リスト値、必須性など、大半の設定を対応する項目から継承します。フローでその設定を変更することはできません。 

Pyroclastic の場合、ケースの [説明] 項目と [件名] 項目は Salesforce で必須項目と定義されていませんが、サポートチームはフローで必須にしたいと考えています。フローと対応する項目で必須性が一致しないため、この 2 つの項目にレコード項目コンポーネントを使用することはできません。そのため、より柔軟な設定オプションがあるロングテキストエリアコンポーネントとテキストコンポーネントを使用しました。

一部の項目プロパティはレコード項目コンポーネントから継承され、変更できませんが、デフォルト値やレコードタイプの検索条件など、レコード項目コンポーネントにまったく反映されない項目プロパティもあります。詳細は、「Record Fields on Flow Screens (Dynamic Forms for Flow) Considerations (フロー画面のレコード項目 (フローの動的フォーム) に関する考慮事項)」を参照してください。

メモ

レコード項目ですべての項目のデータ型がサポートされているわけではありませんが、Salesforce はサポートするデータ型を増やしています。サポートされるデータ型を確認するには、Salesforce ヘルプドキュメントの「Record Fields on Flow Screens (Dynamic Forms for Flow) Considerations (フロー画面のレコード項目 (フローの動的フォーム) に関する考慮事項)」を参照してください。

選択リストレコード項目コンポーネントとルックアップレコード項目コンポーネントを追加する

Flo のところに Pyroclastic のサポートチームからまたもやフィードバックが届きました。今度は、[Create Case for Contact (取引先責任者のケースを作成)] フローで、原因と関連取引先を収集したいということです。項目名、選択リスト値、必須性がケースオブジェクトと一致しているため、レコード項目コンポーネントのうってつけの候補です。

レコード項目コンポーネントは、他の画面コンポーネントやフロー要素とは設定方法が異なります。オブジェクトを直接選択するのではなく、特定のオブジェクトに対応するレコード変数を使用します。既存のレコード変数を選択するか、新しいレコード変数を作成することができます。サポートチームが使いたい新しい項目にアクセスするために、ケースオブジェクトに基づいてレコード変数を作成します。

  1. [Questions Page 2 (質問ページ 2)] 画面で、左ペインの [項目] タブをクリックします。
  2. [レコード変数] で [+新規リソース] を選択します。
  3. [API 参照名] に、caseVar と入力します。
  4. [オブジェクト] で [ケース] を選択します。
  5. [Done (完了)] をクリックします。
    [Record Variable (レコード変数)] 項目に [caseVar] リソースが表示され、この変数でサポートされる項目がリストされます。

    [caseVar] レコード変数と、画面に追加可能なケース項目が表示されている [項目] サイドバー。
  6. [項目] リストから [原因] を画面キャンバスにドラッグします。
  7. [項目] リストから [QA Reviewer (QA レビュー担当者)] を画面キャンバスにドラッグします。

これで選択リスト項目と参照項目が画面フローに追加され、名前、オブジェクト設定、選択リスト値もすでに設定されています。5 個、10 個、あるいはそれ以上の項目を追加する必要がある場合に、どれほど迅速に処理できるか想像してみてください!

メモ

このバッジの前半で、既存のケース項目をそのまま反映する画面コンポーネントを追加しました。その際、なぜレコード項目コンポーネントを使わなかったのでしょうか? 上記のどの項目も、それぞれ表示ラベル、必須性、検索条件が異なることから、質問を異なる方法で設定する必要がありました。そのため、設定可能なコンポーネントを使用しました。

設定が異なる参照項目を作成する

この画面フローの構築中に、Flo がさらなる要件を受け取りました。[QA Reviewer (QA レビュー担当者)] 参照項目は、すべてで必須にするのではなく、このフローでのみ必須にする必要があるというものです。けれども、この項目自体が必須と定義されていないため、レコード項目コンポーネントは使用できません。心配はいりません。ルックアップ画面コンポーネントを使用できます。

ルックアップコンポーネントも、レコード項目コンポーネントと同様に、Salesforce オブジェクトに既存の参照項目を模倣します。ただし、ルックアップコンポーネントは、デフォルト値の設定や必須の定義など、レコード項目コンポーネントよりも多くの設定が必要になります。設定スタイルも他のコンポーネントとは異なり、手動入力が増えるほか、オブジェクトや項目の API 参照名に関する知識が求められます。ルックアップコンポーネントを追加するときに、オブジェクトマネージャーのオブジェクトやその項目を参照する必要のある場合があります。

レコード項目コンポーネントをルックアップコンポーネントに置換する

  1. [Questions Page 2 (質問ページ 2)] 要素で、削除 をクリックして、画面キャンバスから [QA Reviewer (QA レビュー担当者)] レコード項目を削除します。
  2. 左サイドバーの [コンポーネント] タブをクリックして、画面コンポーネントのリストを表示します。
  3. [コンポーネント] サイドバーから [ルックアップ] を画面キャンバスにドラッグします。
  4. [API 参照名] に、ScreenReviewer と入力します。
  5. [Field API Name (項目 API 参照名)] に、QA_Reviewer__c と入力します。
    この設定に、フローに複製する既存の参照項目の API 参照名が示されます。
  6. [表示ラベル] に、QA Reviewer (QA レビュー担当者) と入力します。
  7. [Field API Name (項目 API 参照名)] に、Case と入力します。
    Case は、既存の参照項目を含むオブジェクトの API 参照名です。
  8. [Record ID (レコード ID)] で [$User] > [Id] を選択します。
    この設定により、ユーザーが選択した値をフローのどこに保存するかが決まります。フローの実行時、ここで設定した値がデフォルト値になります。この例では、フローを実行すると、実行ユーザーの ID が [QA Reviewer (QA レビュー担当者)] ルックアップコンポーネントのデフォルト値になります。
  9. [Required (必須)] で [$GlobalConstant.True] を選択します。

    上記の手順に対応する設定が表示されている [ルックアップ] プロパティペイン。
  10. [完了] をクリックします。

これで完了です。ルックアップコンポーネントは、レコード項目コンポーネントよりも調査や設定に多少時間がかかります。けれども、適切に機能し、数種の設定オプションを備えています。

[レコードを作成] 要素を更新する

新しい画面コンポーネントで収集した値を使用するには、ケースを作成する要素に項目値を追加する必要があります。どの画面コンポーネントも、実行ユーザーの回答を独自の方法で参照します。テキストコンポーネントとロングテキストエリアコンポーネントは API 参照名を使用して参照し、切り替えコンポーネントは値プロパティ (.value) を使用して参照しました。この単元で追加した 3 つのコンポーネントは、これとは異なる 3 種類の方法でコンポーネントの値を参照します。連絡窓口、原因、QA レビュー担当者を [ケースを作成] 要素に追加する過程で、それぞれの方法を見ていきましょう。

データテーブルコンポーネントから値を取得する

  1. [ケースを作成] 要素を開きます。
  2. [項目値を設定] で、[+項目を追加] をクリックします。
  3. [項目] で [ContactId] を選択します。
  4. [値] で [PointOfContact] > [firstSelectedRow] > [Id] を選択します。

必要な ContactId は、各行 (取引先責任者レコード) に複数の列 (項目値) が設定されているデータテーブルから選択されています。[レコードを作成] 要素に、選択したテーブル行のどの項目を使用するかを指示する必要があります。

ユーザーが複数のレコードを選択できるようにデータテーブルが設定されている場合は、ユーザーが最初に選択したレコードが Flow Builder で使用されます (必ずしも順番が最初のレコードとは限りません)。

ルックアップコンポーネントから値を取得する

  1. [+項目を追加] をクリックします。
  2. [項目] で [QA_Reviewer__c] を選択します。
  3. [値] で [ScreenReviewer] > [recordId] を選択します。

ルックアップコンポーネントから QA_Reviewer__c を設定します。ロングテキストエリアやラジオボタンコンポーネントなどの他のコンポーネントとは異なり、ルックアップコンポーネントには参照可能な値が複数あります。ここでは、レコード ID を必要とする参照項目を設定しているため、コンポーネントの recordId を選択します。

レコード項目コンポーネントから値を取得する

大半の画面コンポーネントでは、ユーザーの入力した値がコンポーネントに保存されます。データ要素でその値を参照するには、コンポーネントまたはそのコンポーネント内の項目を選択します。たとえば、[問題の説明] の値は ScreenDescription コンポーネントに保存され、[Point of Contact (連絡窓口)] の値は PointOfContact コンポーネントの Id 項目に保存されます。データ要素に項目値を設定するときは、[値] 選択リストの [画面コンポーネント] セクションから選択します。

上記の説明に対応する [値] 選択リストの [画面コンポーネント] セクション。

レコード項目コンポーネントは若干異なります。レコード項目コンポーネントの場合は、値がコンポーネント自体に保存されるのではなく、コンポーネントに関連するレコード変数に保存されます。たとえば、選択した原因は、[原因] レコード項目を画面に追加したときに選択した caseVar レコード変数に保存されます。

[Create Case for Contact (取引先責任者のケースを作成)] 要素では、[原因] レコード項目コンポーネントが caseVar レコード変数に関連付けられています。

レコード項目コンポーネントの場合は、データ要素に項目値を設定するときに、[値] 選択リストの [レコード (単一) 変数] セクションから選択します。

[レコード (単一) 変数] に caseVar が表示されている [値] リスト。

  1. [+項目を追加] をクリックします。
  2. [項目] で [Reason] を選択します。
  3. [Value (値)] で [caseVar] > [Reason] を選択します。
    ケースの新しい項目値が次のように表示されます。

    上記の手順に対応する、[ケースを作成] 要素に新たに追加された項目。

ユーザーがファイルをアップロードできるようにする

この単元を終える前に、フローに追加する機能がもう 1 つあります。ケースによっては、トラブルシューティングに役立つスクリーンショットやその他の画像をサポートエージェントがお客様に送信してもらうことがあります。エージェントはそうした画像をケースに添付したいと考えています。

ファイルのアップロード画面コンポーネントは、その名のとおり、ファイルを Salesforce にアップロードします。アップロードしたファイルを作成済みのケースに関連付けるには、ケースを作成する要素に続く画面要素に、ファイルのアップロードコンポーネントを追加します。この処理をしなければ、ファイルをアップロードするケースが見つからず、アップロードに失敗します。

[アップロード] ボタンのある画面を追加する

  1. [ケースを作成] 要素の後に画面要素を追加します。
  2. [表示ラベル] に、File Upload Screen (ファイルのアップロード画面) と入力します。
  3. [ファイルのアップロード] コンポーネントを画面キャンバスにドラッグします。
  4. [API 参照名] に、UploadImages と入力します。
  5. [File Upload Label (ファイルのアップロードの表示ラベル)] に、The case has been created.Do you have any related files to upload to it? (ケースが作成されました。アップロードする関連ファイルはありますか?) と入力します。
  6. [複数のファイルを許可] で [$GlobalConstant.True] を選択します。
  7. [関連レコード ID] で [Create_Case からの CaseId] を選択します。
  8. [完了] をクリックします。
  9. フローを保存します。

通常は、画面要素で入力を収集した後で、その入力を Salesforce レコードに保存するデータ要素 ([レコードを作成]、[レコードを更新] など) が必要です。ただし、この場合は例外です。新しい画面要素に含まれるのがファイルのアップロードコンポーネントのみで、このファイルのアップロードコンポーネントにファイルが自動的に保存されるためです。ユーザーがフローを実行してファイルをアップロードすると、ファイルがすぐケースに添付されます。

リソース

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