在lightning页面中,是可以导出报表数据的,如果需要把导出的Excel发给非SF用户,就无法使用订阅功能,只能截取它的Excel链接,然后生成Excel文件。
通过抓包工具,可以截取到2个链接:
1)/' + report.Id + '?csv=1&exp=1&enc=UTF-8&isdtp=p1
2)/?ec=302&startURL=%2Fservlet%2FPrintableViewDownloadServlet%3Fisdtp%3Dp1%26reportId%3D' + report.Id + '%26detailsOnly%3Dtrue&isdtp=p1
第一个链接用于生成.csv格式,第二个链接用于生成.xlsx格式。
通过Apex实现邮件发送,并携带报表数据作为附件
// 构建邮箱
List<String> toAddressList = new List<String>{'xxx@qq.com'};
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setToAddresses(toAddressList);
mail.setSubject('标题');
mail.setHtmlBody('内容');
// 携带附件
Messaging.EmailFileAttachment emlAtt = new Messaging.EmailFileAttachment();
emlAtt.setFilename('report.xlsx');
mail.setFileAttachments(new List<Messaging.EmailFileAttachment>{emlAtt});
// xlsx格式
String reportId = ''; // todo
String reportUrl = '/?ec=302&startURL=%2Fservlet%2FPrintableViewDownloadServlet%3Fisdtp%3Dp1%26reportId%3D' + reportId + '%26detailsOnly%3Dtrue&isdtp=p1&enc=GB2312';
ApexPages.PageReference reportPage = new ApexPages.PageReference(reportUrl);
emlAtt.setBody(reportPage.getContent());
// 执行发送
Messaging.sendEmail(new List<Messaging.Email>{mail});