You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Salesforce Metadata API和simple-salesforce读取Picklist值

获取Salesforce全局Picklist值集的选项

当你通过_sf.mdapi.CustomObject.read(sf_object_name)读取自定义对象元数据时,遇到的这种情况是因为该Picklist字段使用了全局值集(Named Value Set),而非字段级的本地值集:

  • 本地值集会直接在valueSet.valueSetDefinition.value中返回选项列表
  • 全局值集仅返回valueSetName,具体选项需要单独调用API读取

解决方案:读取全局值集元数据

你可以使用simple-salesforce的mdapi.ValueSet.read()方法,传入返回的valueSetName来获取实际的选项:

# 假设已经获取到字段的valueSetName
value_set_name = "Student_Challenge_Experience_Homesick"
# 读取全局值集元数据
value_set_metadata = _sf.mdapi.ValueSet.read(value_set_name)
# 提取选项列表
picklist_options = value_set_metadata.valueSetDefinition.value

返回的picklist_options结构和本地值集的选项格式一致,包含fullName(值)、label(标签)等字段。

统一处理逻辑示例

如果需要批量处理所有Picklist字段,可以加个判断逻辑,自动区分本地/全局值集:

object_metadata = _sf.mdapi.CustomObject.read(sf_object_name)

for field in object_metadata.fields:
    if field.type == "Picklist":
        value_set = field.valueSet
        if value_set.valueSetName:
            # 全局值集,单独读取
            vs_meta = _sf.mdapi.ValueSet.read(value_set.valueSetName)
            options = vs_meta.valueSetDefinition.value
        else:
            # 本地值集,直接获取
            options = value_set.valueSetDefinition.value
        print(f"字段 {field.fullName} 的选项: {options}")

内容的提问来源于stack exchange,提问作者ezeYaniv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:52:15