我正在尝试编写一个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());
答案 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复选框