[Salesforce開発] Apexで選択リスト項目のすべての選択肢を取得するには?

SFエンジニア

取引先のSLAというカスタム項目はデータ型が選択リストなのだけど、Apexで選択肢の値を取得するにはどうすれば良いかね?

SF宣教師

Schemaクラスを使って実現できます。

目次

サンプルコード

開発者は、取引先 (Account) からSLA (SLA__c)という選択リスト項目の選択肢を取得する必要があります。

以下のコードは、取得した結果を System.debug で出力するコード例です。

// Describe呼び出しを使用して、ピックリストの詳細情報を取得します。
Schema.DescribeFieldResult fieldResult = Schema.SObjectType.Account.fields.SLA__c;
// ピックリストエントリを取得します。
List<Schema.PicklistEntry> picklistValues = fieldResult.getPicklistValues();
// ピックリストの各エントリの値を表示します。
for (Schema.PicklistEntry entry : picklistValues) {
    System.debug('SLA Option: ' + entry.getLabel());
}

このコードのポイントを説明します。

// Describe呼び出しを使用して、ピックリストの詳細情報を取得します。
Schema.DescribeFieldResult fieldResult = Schema.SObjectType.Account.fields.SLA__c;

この行は、取引先オブジェクト「Account」の「SLA__c」というカスタム項目の詳細情報を取得するDescribe呼び出しを行っています。

DescribeFieldResult クラス
Apexコード内でSObject(オブジェクト)のフィールドに関するメタデータ情報にアクセスするためのクラスです。このクラスを使用することで、Apexコード内でフィールドに関する情報を取得し、そのプロパティや設定を調べることができます。
このクラスのメソッドの例:
getLabel() メソッド – フィールドのラベルを取得
getName() メソッド – フィールドのAPI名を取得
isAccessible() メソッド – フィールドに対するアクセス権があるかを判定
Apex開発者ガイド: DescribeFieldResult クラス

// ピックリストエントリを取得します。
List<Schema.PicklistEntry> picklistValues = fieldResult.getPicklistValues();

Describe呼び出しによって取得されたカスタム項目の詳細情報から、選択リストの選択肢(エントリ または オプションと言う)のリストを取得しています。

コードを実行した結果、開発者コンソールの Executing Log の出力例です。

SF宣教師

以上です!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次