使用Apex更新Salesforce自定义元数据出现名称格式错误如何解决?
问题修复方案
错误根因
Salesforce要求通过Apex Metadata API操作自定义元数据记录时,CustomMetadata.fullName必须遵循[自定义元数据类型API名].[记录DeveloperName]的格式,你当前代码仅传入了记录的DeveloperName,缺少自定义元数据类型前缀,因此触发格式校验错误。
修复代码
只需要修改customMetadata.fullName的赋值逻辑即可,调整后的完整代码如下:
Metadata.DeployContainer mdContainer = new Metadata.DeployContainer(); for(Omni_Routing_Skillset__mdt md: omnimetadata) { Metadata.CustomMetadata customMetadata = new Metadata.CustomMetadata(); // 修复:补充自定义元数据类型API名作为前缀 customMetadata.fullName = 'Omni_Routing_Skillset__mdt.' + md.DeveloperName; customMetadata.Label = md.MasterLabel; Metadata.CustomMetadataValue customField1 = new Metadata.CustomMetadataValue(); customField1.field = 'Omni_Routing_Skillset__mdt.Skill_Level__c'; customField1.value = skillsAndValues.get(md.MasterLabel); customMetadata.values.add(customField1); mdContainer.addMetadata(customMetadata); System.debug('customMetadata: ' + customMetadata); } Id jobId = Metadata.Operations.enqueueDeployment(mdContainer, null);
额外注意事项
- 如果你的自定义元数据类型属于托管包,需要在类型API名前补充命名空间前缀,格式为
[命名空间]__[元数据类型API名].[记录DeveloperName] - 部署任务提交后可以进入设置 → 部署 → 部署状态页面,查看任务的实时执行进度和详细日志
内容的提问来源于stack exchange,提问作者Fateh B
相关产品推荐
相关产品推荐

