查找Salesforce全局值集的ID

时间:2018-12-17 19:46:57

标签: salesforce apex

我正在尝试编写一个APEX类,该类将向全局值集添加项目,但是要这样做,我需要知道全局值集的ID。是否有办法(通过APEX而不是通过查看URL)来查找选择列表字段正在使用的全局值集的ID?理想情况下,我可以执行以下操作:

Case.picklistField__c.getdescribe();

并获得包含其使用的全局值集的ID的响应-这样,我便可以使用我的metadataAPI更新值。

或者,如果我可以按名称找到全局值集,则可以将其与元数据api一起使用。

更新:能够通过工具API的Eyescreams建议使此功能正常工作-完整实现:​​

    String gvsName = 'TestValueSet'; //name of the global valueset you want the Id for goes here

    HttpRequest req = new HttpRequest();
    req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionID());
    req.setHeader('Content-Type', 'application/json');      
    req.setEndpoint(URL.getSalesforceBaseUrl().toExternalForm()+'/services/data/v41.0/tooling/query/?q=select+id+from+globalvalueset+Where+developername='+gvsName);
    req.setMethod('GET');
    Http httpreq = new Http();
    HttpResponse res  = httpreq.send(req);
    system.debug(res.getBody()); 

2 个答案:

答案 0 :(得分:1)

这几天,您需要像这样对变量进行转义:

String gvsName = 'TestValueSet'; //name of the global valueset you want the Id for goes here

HttpRequest req = new HttpRequest();
req.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionID());
req.setHeader('Content-Type', 'application/json');      
req.setEndpoint(URL.getSalesforceBaseUrl().toExternalForm()+'/services/data/v48.0/tooling/query/?q=select+id+from+globalvalueset+Where+developername=\''+gvsName+'\'');
req.setMethod('GET');
Http httpreq = new Http();
HttpResponse res  = httpreq.send(req);
system.debug(res.getBody());

答案 1 :(得分:0)

SELECT Id, FullName, Description
FROM GlobalValueSet

但是在直接的Apex查询中不可用,您需要Tooling API(表示REST标注)。您可以在开发者控制台->查询编辑器中使用它,只需选中底部的工具api复选框