代码之家  ›  专栏  ›  技术社区  ›  roryok

如何使用apex在Salesforce中以编程方式访问报表

  •  4
  • roryok  · 技术社区  · 14 年前

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

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

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

    有人知道有没有办法做到吗?

    5 回复  |  直到 8 年前
        1
  •  8
  •   roryok    13 年前

    在对它进行了大量研究之后,我发现目前唯一能做到这一点的方法确实是刮取csv文档。我猜康加等人正使用这种方法。

    我们做这个已经有一段时间了,它起作用了。唯一需要注意的是:

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

    • 你必须了解客户的主人,这很难 纠正错误。例如,虽然大多数欧洲客户会使用emea.salesforce.com访问csv,但我们的账户使用na7(北美7),即使我们位于 爱尔兰。我正在将页面宿主发送到应用程序并对其进行分析 计算要使用的正确子域,但我认为必须有 更好的方法。

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

        2
  •  2
  •   xedxgex    13 年前

    在SalesforceSpring11更新中,您似乎可以获得有关报告的更多信息: 如API中所述 Report ReportType ,您可以通过apex访问报表查询中使用的字段,读取字段“ 以及用于表示调用的筛选器的字段 滤波器 “。

    通过迭代这些对象,应该可以构建一个表示报表相同查询的字符串。生成该字符串后,可以使用database.query(..)调用进行动态查询。

    看起来有点乱,但应该管用。(尚未测试!)

    作为标题状态,这只适用于自定义报告!

        3
  •  2
  •   Community CDub    7 年前

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

    这都是固定的,从2014年冬天开始,您可以通过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/

        4
  •  1
  •   matt    13 年前

    但是conga(appextremes)在其QuickMerge产品中这样做,用户指定报表ID,页面上的apex脚本运行报表以提取邮件合并操作的结果。

        5
  •  0
  •   superfell    14 年前

    v20.0api添加了有关报表的元数据,但无法实际运行报表并获得结果。如果这是一个标准报告,或者您定义的一个报告,您可以为您的报告计算出等效的SOQL查询并运行它,但是如果它是一个最终用户定义的报告,就没有办法做到这一点。