フローでレコードの選択リスト値の表示ラベルを取得する方法

PicklistValueInfoを利用した選択リスト値の表示ラベルの情報を取得する方法についてご紹介します。

はじめに

みなさん、こんにちは
今回は、フローでレコードに保存されている選択リスト値の表示ラベルの値を取得する方法についてご紹介します。

え?選択リスト値の取得?レコードを取得するときに項目で選択リストの項目を選べばいいんじゃない?
そう思った方いませんか?

実はフローのレコードを取得で取得される情報はAPI参照名であり、単純にレコードを取得するだけでは表示ラベルの情報を取得することはできないのです。ではどのようにすれば表示ラベルの情報を取得することができるのでしょうか?

今回は「PicklistValueInfo」オブジェクトから選択リストの表示ラベル情報を取得する方法についてご紹介いたします。

まずは選択リスト項目を変数に割り当ててみる(失敗例)

以下のように、選択リスト項目で選んだ値をテキスト項目に割り当てを行い、保存を押してみます。
今回は都道府県項目で「東京」という選択リストを選んだ場合を想定してみます。
このような場合、変数に割り当てられるのはAPI参照名であり、表示ラベルを割り当てることができません。
もっとも簡単な解決策として表示ラベルとAPI参照名を一致させる方法がありますが、お客様によってはすでに選択リストをグローバル選択リストやマスタで定義されているためAPI参照名を変更できないケースが多々あります。
そういった場合に今回の方法が役に立つでしょう。

PicklistValueInfoオブジェクトについて

PicklistValueInfoオブジェクトには、選択リスト値の定義情報が保存されています。組織にあるすべての選択リスト値の定義が保存されているため、PicklistValueInfoから取得したい選択リスト値の情報を特定するには以下2つの情報が必要となります。

①エンティティ定義(EntityDefinition):オブジェクトの定義情報が保存されているオブジェクト
②エンティティパーティクル(EntityParticle):項目の定義情報が保存されているオブジェクト

この2つの情報をフロー上で取得し、PicklistValueInfoで取得したい選択リスト値の情報を特定することができます。
それでは実際にフローを作ってみましょう。

フローを作ってみる

①エンティティ定義情報の取得
今回は取引先にある選択リスト値の表示ラベルの情報を取得する想定で行うため、以下の設定で取引先に関する情報を取得します。

API参照名:GetEntityDefinition
オブジェクト:エンティティ定義
絞り込み条件:すべての条件に一致(AND)
修飾されたAPI参照名 次の文字列と一致する Account
保存するレコード数:最初のレコードのみ

②エンティティパーティクルの取得
先ほど取得したエンティティ定義情報を基にエンティティパーティクル(EntityParticle)を取得します。

API参照名:GetEntityParticle
オブジェクト:エンティティパーティクル
絞り込み条件:すべての条件に一致(AND)
QualifiedApiName 次の文字列に一致する prefecture__c(対象の選択リスト項目のAPI参照名)
EntityDefinitionId 次の文字列と一致する {!GetEntityDefinition.DurableId}
保存するレコード数 : 最初のレコードのみ

③選択リスト値情報を取得
②で取得したエンティティパーティクルの情報を基に選択リスト値情報を取得します。

API参照名GetPickValueInfoList
オブジェクト:選択リスト値情報
絞り込み条件 : すべての条件に一致(AND)
EntityParticleId 次の文字列と一致する {!GetEntityParticle.DurableId}
値 次の文字列と一致する トリガーで選択された値
保存するレコード数 : すべてのレコード
レコードデータの保存方法 : 項目を選択して変数を割り当てる(高度)
保存する変数を選択 : {!PicklistValueInfoList}
変数に保存する項目を選択 : Label

以上がフローの詳細となり、全体像は以下のような形になります。
「選択リスト値情報の取得」で取得した表示ラベル情報はテキスト型として、他項目の取得の際の検索条件や他のテキスト項目に値として割り当てることができます。

まとめ

最後までお読みいただきありがとうございました!

定義情報を経由する方法でしか取得できない情報も多々あるため、お困りの際はぜひ活用いただければと思います。

また次回のブログでお会いしましょう!

参考