如何使用Apex在SalesForce中以编程方式访问报表

时间:2010-11-25 13:01:58

标签: salesforce apex-code

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

我似乎能找到这样做的唯一方法是将报告结果添加到新创建的广告系列中,然后访问该广告系列。这似乎还有很长的路要走。

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

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

5 个答案:

答案 0 :(得分:8)

经过大量研究后,我发现目前唯一的方法就是抓取CSV文件。我猜想Conga等正在使用这种方法。

我们已经做了一段时间了,它确实有效。唯一的警告是:

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

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

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

答案 1 :(得分:2)

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

迭代此对象,应该允许您构建表示Report的同一查询的String。构建该字符串后,您可以使用Database.query(..)调用进行动态查询。

它看起来有点乱,但是应该有用......(没试过!)

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

答案 2 :(得分:2)

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

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

此处的文档 - 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/

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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