课程章节介绍
同学们,今天我们聊聊怎么在Apex代码里运行Salesforce的报表。
先想象一个场景:你写了一个自动化程序,需要立刻拿到报表结果来发邮件或者做判断,这时候我们就用,同步运行,。同步的意思就是代码会等着,直到报表跑完返回数据。使用方法叫 `ReportManager.runReport`。你需要告诉它两样东西:一是报表的ID,二是你要不要带上详细数据,就是一个布尔值,true就包含详细记录,false就只拿汇总信息。
那报表ID从哪儿来呢?你不能直接手写一个,得用SOQL去查。比如,你可以这样查:`SELECT Id FROM Report WHERE DeveloperName = '你的报表唯一名称'`,拿到的Id就是我们要用的。注意,`DeveloperName`是报表在系统中的API名称,其他字段也行,只要能定位到你要的报表。
但如果报表数据量特别大,可能跑很久,你不想让代码一直卡住,那就用,异步运行,。方法叫 `ReportManager.runAsyncReport`。这个方法不会当场给你结果,而是返回一个 `ReportInstance` 对象。这个对象就像一个工单,报表在后台跑,你可以拿着这个工单的ID,过一会儿再用查询去看它跑完了没,最后再拿结果。
`runAsyncReport` 比同步方法多一个可选的参数:`ReportMetadata`,用来附加过滤条件,比如只跑某个部门的数据。参数顺序通常是:报表ID、可选的报表元数据、还有一个布尔值控制是否包含详细信息。
总结一下:同步直接拿结果,用 `runReport`;异步不卡顿,先拿个工单,用 `runAsyncReport`。报表ID通过SOQL从Report对象获取,就这么简单。
这样讲是不是清晰多了?下次你自己写代码跑报表,就知道怎么选了。
关键词
Apex
Salesforce
Developer Guide