查找 Salesforce 全局值集的 ID
Finding the ID of a Salesforce Global Value Set
我正在尝试编写一个 APEX class,它将向全局值集添加项目,但为了这样做,我需要知道全局值集的 ID。有没有办法找到选择列表字段正在使用的全局值集的 ID(通过 APEX,而不是通过查看 URL)?理想情况下,我可以做类似的事情:
Case.picklistField__c.getdescribe();
并获得一个响应,其中包含它使用的全局值集的 ID - 这样我就可以使用我的元数据API 来更新值。
或者,如果我可以通过名称找到全局值集,我可以将其与元数据一起使用 api 作为解决方法。
更新:能够使用 Eyescreams 建议和工具 API - 完整实现:
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());
SELECT Id, FullName, Description
FROM GlobalValueSet
但它在直接 Apex 查询中不可用,您需要 Tooling API(意味着 REST 标注)。您可以在 Developer Console -> Query Editor 中使用它,只需选中底部的工具 api 复选框
现在你需要像这样转义变量:
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());
我正在尝试编写一个 APEX class,它将向全局值集添加项目,但为了这样做,我需要知道全局值集的 ID。有没有办法找到选择列表字段正在使用的全局值集的 ID(通过 APEX,而不是通过查看 URL)?理想情况下,我可以做类似的事情:
Case.picklistField__c.getdescribe();
并获得一个响应,其中包含它使用的全局值集的 ID - 这样我就可以使用我的元数据API 来更新值。
或者,如果我可以通过名称找到全局值集,我可以将其与元数据一起使用 api 作为解决方法。
更新:能够使用 Eyescreams 建议和工具 API - 完整实现:
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());
SELECT Id, FullName, Description
FROM GlobalValueSet
但它在直接 Apex 查询中不可用,您需要 Tooling API(意味着 REST 标注)。您可以在 Developer Console -> Query Editor 中使用它,只需选中底部的工具 api 复选框
现在你需要像这样转义变量:
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());