0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Salesforce Apex】選択リスト値を動的に取得する

Last updated at Posted at 2025-08-27

はじめに

選択リスト値を動的に取得する方法がわからなかったので、まとめます

取得方法

選択リスト値を取得するコードです
ある項目の選択リスト値を取り出しています。
オブジェクト名と項目値を変更して匿名実行すると、
何が取り出せるのか見れます。

ある1項目の選択リスト値を取り出す
// ⓵ メタデータ取得
Schema.DescribeFieldResult o = sObjectName__c.fieldName__c.getDescribe();

// ⓶ ⓵の情報からgetPicklistValuesメソッドで,その項目の選択リスト値を取得
List<Schema.PicklistEntry> v = o.getPicklistValues();

// ⓷ 選択リスト最初の値を取り出す
Schema.PicklistEntry first = v[0];

// ⓸ 取り出した最初の1つの情報の値を確認
System.debug('●Label =' + first.getLabel());
System.debug('●Value =' + first.getValue());
System.debug('●Active =' + first.isActive());

イメージ:
⓵getDescribe()で、項目の全体的な情報を取得する。項目型、最大文字数など。その項目の詳細情報みたいな。
このメソッドの返り値がDescribe Field Result。
⓶getPicklistValues()メソッドで、選択リストの値を取得する
⓷ ⓶をするとList型で返ってくるので、1番目の値を取り出している
⓸ 値をdebugで確認している

方法

テストで使うために、選択リスト値の一番目の値を取り出すメソッドを作りました

共通メソッド
    // 任意の選択リスト項目から一番目の値を返すメソッド
    private static String getFirstPicklistValue(Schema.SObjectField field) {
    
        // メタデータを取得し、さらに選択リスト値を取得する
        List<Schema.PicklistEntry> values = field.getDescribe().getPicklistValues(); 

        // 空じゃなければ、1番目の値を返す
        return values.isEmpty() ? null : values[0].getValue(); 
    }

↓ 使うときイメージ

使うときイメージ
customObject obj = new customObject();
// 選択リスト値最初の値を設定する
obj.pickListField__c = getFirstPicklistValue(customObject.pickListField__c);

おわりに

テストクラス作るときに、項目が多かったのでメソッド化しました
それにしてもSalesforceが用意してくれるメソッドは便利ですね

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?