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

使用Salesforce Tooling API更新自定义字段picklist值集报错如何解决

问题原因

  • 传入的picklist值对象缺少必填的fullName字段:Salesforce Tooling API要求每个picklist选项必须同时指定fullName(存储在数据库中的API名称,和界面展示的label对应),仅传label会被系统判定为无效值,因此触发「至少需要一个值」的报错。
  • 空值字段的序列化问题:color、description、isActive字段传入None时,会被序列化为null,而Tooling API对这类字段的空值处理有严格校验,也可能导致请求被判定为无效。

解决步骤

  1. 给每个picklist值对象添加fullName字段,值和label保持一致即可(如果没有特殊的API名需求)
  2. 删除不必要的空值字段,或者显式传入合法的布尔/字符串值,不要传None
  3. 修正后的payload参考如下:
payload = {
    "Metadata": {
        "valueSet": {
            "valueSetDefinition": {
                "value": [
                    {
                        'default': False,
                        'label': 'Agilysis',
                        'fullName': 'Agilysis',
                        'isActive': True
                    }
                ],
                "sorted": True,
            },
            "restricted": False,
        }
    },
}
  1. 如果是在原有picklist的基础上追加选项,而不是全量覆盖,需要先调用GET接口拉取当前所有的picklist值,把新选项追加到value数组后再提交PATCH请求,否则原有选项会被清空。

注意事项

  • 若该picklist字段绑定的是全局共享值集,直接更新字段的valueSet属性会报错,需要单独调用Tooling API更新对应全局值集的元数据。
  • PATCH请求是全量覆盖逻辑,提交的value数组就是更新后picklist的全部选项,切记不要只传新选项导致原有选项丢失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 09:27:03