如何批量导出对象所有Picklist字段的标签、API名及默认值?
批量导出对象Picklist字段的标签、API名及默认值解决方案
步骤1:获取目标对象所有Picklist类型字段的entityParticleId
先执行以下SOQL查询,得到目标对象(以Case为例)所有Picklist/MultiselectPicklist字段的唯一标识(即entityParticleId):
SELECT Id, DeveloperName, Label FROM EntityParticle WHERE EntityDefinition.QualifiedApiName = 'Case' AND DataType IN ('Picklist', 'MultiselectPicklist')
- 替换
'Case'为你需要查询的对象API名称 - 查询结果中的
Id就是后续需要的entityParticleId
步骤2:批量查询Picklist选项及默认值信息
方式一:工具手动拼接(适合快速操作)
将步骤1导出的Id列表拼接成逗号分隔的字符串,代入以下SOQL:
SELECT isDefaultValue, label, value, EntityParticle.DeveloperName, EntityParticle.Label FROM PicklistValueInfo WHERE entityParticleId IN ('id1','id2','id3'...)
执行后即可得到所有Picklist字段的选项标签、值、所属字段的API名/标签,以及是否为默认值。
方式二:Apex脚本自动批量处理(适合大量字段)
使用Apex脚本可自动完成字段筛选和关联查询,无需手动复制ID:
// 替换为目标对象的API名称 String targetObjectApiName = 'Case'; // 筛选目标对象的所有Picklist类型字段 List<EntityParticle> picklistFields = [ SELECT Id, DeveloperName, Label FROM EntityParticle WHERE EntityDefinition.QualifiedApiName = :targetObjectApiName AND DataType IN ('Picklist', 'MultiselectPicklist') ]; Set<Id> particleIds = new Set<Id>(); for(EntityParticle field : picklistFields) { particleIds.add(field.Id); } // 查询所有Picklist选项及默认值 List<PicklistValueInfo> picklistData = [ SELECT isDefaultValue, label, value, EntityParticle.DeveloperName, EntityParticle.Label FROM PicklistValueInfo WHERE entityParticleId IN :particleIds ]; // 输出结果(可修改为导出到CSV或其他格式) for(PicklistValueInfo item : picklistData) { System.debug( '字段标签: ' + item.EntityParticle.Label + ' | 字段API名: ' + item.EntityParticle.DeveloperName + ' | 选项标签: ' + item.label + ' | 选项值: ' + item.value + ' | 是否默认: ' + item.isDefaultValue ); }
- 将脚本放到Developer Console的匿名窗口执行,即可在调试日志中查看结果,或添加CSV导出逻辑直接生成文件。
内容的提问来源于stack exchange,提问作者khushi
相关产品推荐
相关产品推荐

