誰かがこれを行うことができた場所を読みましたが、それを機能させるのに苦労しています。
基本的に、CSV を作成して受信者に電子メールで送信するコントローラーを持つページへの HTTP コールアウトをスケジュールしています。
予定クラス:
global class ReportExporter implements System.Schedulable {
global void execute(SchedulableContext sc) {
getmailReportOutput ex = new getmailReportOutput();
ex.exportCSV();
}
}
getEmailReportOutput クラス:
public class getmailReportOutput{
public Static String strSessionID;
public getmailReportOutput() {
}
public void exportCSV() {
makeReportRequest();
}
@future (callout=true)
public Static void makeReportRequest() {
strHost ='c.cs4.visual.force.com';
strSessionID = UserInfo.getSessionId();
String requestUrl = 'https://' + strHost + '/apex/TestSendReport#';
HttpRequest req = new HttpRequest();
req.setEndpoint(requestUrl);
req.setMethod('GET');
req.setHeader('Cookie','sid=' + strSessionID );
String output = new Http().send(req).getBody();
System.debug('HTTP RESPONSE RETURNED: ' + output);
}
}
getEmailReportOutput クラスは、VF ページへの HTTP コールアウトを実行します: リクエストと共に sessionID を送信するようにします: そして、「TestSendReport」はコントローラーへの単純なコールアウトです:
<apex:page controller="Exporter" action="{!runrpt}">
</apex:page>
...そして、コントローラーはレポート コンテンツを呼び出しています。
public class Exporter {
public static Boolean isTest;
public static String strEmailAddr;
public void runrpt() {
executeRpt();
}
@future
public static void executeRpt() {
System.debug('CALLING REPORT EXPORTER...');
String ReportName__c = '00OP0000000Jp3N';
String strEmailAddr = 'myname@email.com';
ApexPages.PageReference report = new ApexPages.PageReference( '/' + RptName__c + '?csv=1');
Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
attachment.setFileName('report.csv');
attachment.setBody(report.getContent());
attachment.setContentType('text/csv');
Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
message.setFileAttachments(new Messaging.EmailFileAttachment[] { attachment } );
message.setSubject('Report');
message.setPlainTextBody('The report is attached.');
message.setToAddresses( new String[] { strEmailAddr } );
Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
}
}
...何か案は?デバッグ ログはすべて正常であることを示していますが、何も受信されていません。私はこれがコードの壁であることを知っていますが、タスクを達成するために人々が推奨しているようです.