Apex 選択リスト取得方法説明
Apex を使用して Salesforce 内の選択リストから値を取得する方法は以下の通りです。
- 最初に、選択リストが定義されているオブジェクトのフィールド情報を取得するために、「Schema.DescribeFieldResult」クラスを使用します。このクラスには、選択リストに関する情報が含まれています。
Schema.DescribeFieldResult fieldResult = Account.Industry.getDescribe();
- 次に、「Schema.PicklistEntry」クラスを使用して、選択リストから取得したいエントリを取得します。「Schema.PicklistEntry」クラスには、選択リストの中のすべてのエントリに関する情報が含まれています。
List<Schema.PicklistEntry> picklistEntries = fieldResult.getPicklistValues();
- 最後に、取得したエントリを使用して、選択リストの中から選択された値を取得することができます。
for (Schema.PicklistEntry picklistEntry : picklistEntries) {
System.debug(picklistEntry.getLabel());
}
では下記具体的な例を参照してください。
実装方法
/**
* 選択リストの項目値を取得
* @param {String} sObjectName オブジェクト名
* @param {String} sFieldName 項目名
* @return 選択リスト
*/
@AuraEnabled
public static List<Map<String, object>> getPicklist(String sObjectName, String sFieldName){
try {
List<Map<String, object>> pickLists = new List<Map<String, object>>();
Map<String, Schema.SObjectType> sObjectDescribeMap = Schema.getGlobalDescribe();
if (sObjectDescribeMap.containsKey(sObjectName)) {
Map<String, Schema.SobjectField> sObjectFieldsMap =
sObjectDescribeMap.get(sObjectName).getDescribe().fields.getMap();
if (sObjectFieldsMap.containsKey(sFieldName)) {
Schema.DescribeFieldResult sObjectFieldDescribe = sObjectFieldsMap.get(sFieldName).getDescribe();
List<Schema.PicklistEntry> lPickEntryList = sObjectFieldDescribe.getPicklistValues();
for (Schema.PicklistEntry tPicklistEntry : lPickEntryList) {
pickLists.add(new Map<String,object> {
'value' => tPicklistEntry.getValue(),
'isActive' => tPicklistEntry.isActive(),
'isDefaultValue' => tPicklistEntry.isDefaultValue(),
'label' => tPicklistEntry.getLabel()
});
}
}
}
return pickLists;
} catch (Exception e) {
throw new AuraHandledException(e.getMessage());
}
}