【发布时间】:2012-11-15 06:32:50
【问题描述】:
我想通过 API 检索任何 salesforce 对象的所有列表视图。该怎么做?
【问题讨论】:
标签: api rest soap salesforce
我想通过 API 检索任何 salesforce 对象的所有列表视图。该怎么做?
【问题讨论】:
标签: api rest soap salesforce
这是一个老问题,但是,使用 REST API 和 Salesforce 的查询语言,您可以使用端点:
{your instance url}/services/data/v32.0/query?q=SELECT Id,Name FROM {object type}
或
使用端点:
{your instance url}/services/data/v32.0/sobjects/{object type}/listviews
一些例子:
获取所有列表视图:https://na16.salesforce.com/services/data/v32.0/query?q=SELECT Id,Name FROM ListView
要获取所有对象类型为帐户的列表视图:https://na16.salesforce.com/services/data/v32.0/sobjects/Account/listviews
在 PHP 中:
$url = "{your instance url}/services/data/v32.0/sobjects/Account/listviews";
$headers = array('Authorization: OAuth ' . {your access token});
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, TRUE );
curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers);
$requestBody = curl_exec ($ch);
$result = json_decode($requestBody, true);
当然,您需要先通过 OAUTH 登录才能获得访问令牌和实例 URL。
【讨论】:
如果您要查找的是 SOAP api,则称为 describeSObject - 用于特定对象,或“describeGlobal” - 用于您组织的所有数据。
请参阅下面的参考链接以获取 SOAP 消息: http://wiki.developerforce.com/page/Sample_SOAP_Messages_(10.0_API)
【讨论】:
为给定对象创建一个StandardSetController(用于实例化它的查询可以有“LIMIT 1”或其他内容,无需选择所有记录)。然后使用getListViewOptions()。
请记住,它将返回对当前用户可见的视图(因此只有公共视图 + 标记为“仅对我可见”的视图)。
编辑: 要从外部访问它(通过 SOAP 或 REST API)... 恐怕我不知道通过 REST 调用获取这些的方法。您可能需要编写一些 Apex 并公开将返回此数据的自定义 REST 资源。没那么难,例子见http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_rest_code_sample_basic.htm。
【讨论】:
getListViewOptions() 将返回您的 ID 列表,而不是它们的定义(因此您可以在 PHP 中重新创建列和过滤条件):( 我能想到的最好的是“最近的项目”(对 URL 的 REST 调用,例如 /services/data/v26.0/sobjects/Account