4

我正在尝试在 SalesForce 平台上编写一个应用程序,该应用程序可以从报告中提取联系人列表并将其发送到网络服务(比如向他们发送电子邮件或短信)

我似乎能找到的唯一方法是将报告结果添加到新创建的活动中,然后访问该活动。这似乎是一个漫长的过程。

我在网上阅读的每篇文章都说您无法通过 Apex 访问报告,但是这些文章中的大部分或全部都是在上个月发布 API 的第 20 版之前编写的,该版本引入了一个新的报告对象。我现在可以以编程方式访问有关报告的信息(例如上次运行的日期等),但我似乎仍然无法找到访问该报告中包含的结果数据的方法。

有谁知道是否有办法做到这一点?

4

5 回答 5

8

经过大量研究,我发现目前这样做的唯一方法确实是抓取 CSV 文档。我猜想康加等人正在使用这种方法。

我们已经这样做了一段时间了,它确实有效。唯一需要注意的是:

  • Salesforce 用户名/密码/安全令牌必须共享到连接的应用程序。如果密码更改(默认情况下每 30 天左右更改一次),则令牌也会更改并且必须重新输入。

  • 您必须知道帐户的主机,这可能很难正确。例如,虽然大多数欧洲帐户会使用 emea.salesforce.com 访问 CSV,但我们的帐户使用 na7(北美 7),即使我们位于爱尔兰。我目前正在将页面主机发送到应用程序并对其进行解析以计算要使用的正确子域,但我认为必须有更好的方法来做到这一点。

Salesforce 确实需要通过提供 API 调用来解决这个问题,该调用允许即时导出自定义报告结果并允许我们使用 OAuth 连接到它。但当然,这不太可能发生。

于 2011-04-15T09:33:53.400 回答
2

在 SalesforceSpring 11 更新中,您似乎可以获得有关报告的更多信息:如 API for ReportReportType所述,您可以通过 Apex 访问报告在查询中使用的字段,读取字段“”,如以及用于表示过滤器的字段称为“过滤器”。

遍历这些对象,应该允许您构建一个表示报表的相同查询的字符串。构建该字符串后,您可以使用 Database.query(..) 调用进行动态查询。

它似乎有点乱,但应该可以工作..(尚未测试!)

如标题所述,这仅适用于自定义报告!

于 2011-05-06T09:11:35.420 回答
2

只是为了澄清会发现这一点的新手,当被问到问题时,您可以以编程方式访问您的报告数据,但您必须使用一些 hacky、容易出错的方法。

这一切都已修复,您现在可以从 Winter '14 开始通过 API 访问您的报告。

此处的文档 - http://www.salesforce.com/us/developer/docs/api_analytics/index.htm

前往那些自定义仪表板等的城镇。从 Salesforce Stack Exchange 交叉发布 - https://salesforce.stackexchange.com/questions/337/can-report-data-be-accessed-programatically/

于 2014-10-15T17:54:35.473 回答
1

但是 Conga (appextremes) 在他们的 QuickMerge 产品中执行此操作,其中用户指定报告 ID,页面上的 apex 脚本运行报告以提取邮件合并操作的结果。

于 2011-04-14T09:37:24.290 回答
0

v20.0 API 添加了有关报告的元数据,但无法实际运行报告并获取结果。如果这是一个标准报告,或者您已定义的报告,您可以为您的报告制定等效的 SOQL 查询并运行它,但如果它是最终用户定义的报告,则无法执行此操作。

于 2010-11-25T19:39:36.860 回答