• Sannn
  • NEWBIE
  • 0 Points
  • Member since 2013

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 5
    Replies

Hello Gurus,

 

I want to run the schedular class as a specific user rather than System.

Is it possible?

Any clues or samples or suggestions.

 

Thanks,

San

  • May 17, 2013
  • Like
  • 0

Hi Everybody,

I have the below Simple apex code 

 

global class ReportTest1 implements System.Schedulable{
     global void execute(SchedulableContext sc) {
        ApexPages.PageReference report = new ApexPages.PageReference('/00O90000003Qn7T?excel=1'); //sandbox
        Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
        attachment.setFileName('TestReport.xls');
        attachment.setBody(report.getContent());
        attachment.setContentType('text/csv');
        Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
        message.setFileAttachments(new Messaging.EmailFileAttachment[] { attachment } );
        message.setSubject('TEst Report');
        message.setHtmlBody('Dear All,<br><br/>Please Find Attached the Report Excel File.<br/>');
        message.setToAddresses( new String[] { 'MY EMAIL ID'} );
        Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
       
     }
}

 

 

Now i am scheduling this for running Every 5 hours and the scheduler runs fine , but i get the blank report.


Now if i change the above class to below , I get a perfect Report when CONSTRUCTOR IS invoked but When scheduler is run i get a blank report   :(

 

global class ReportTest1 implements System.Schedulable{
public ReportTest1()
{
Starter();
}
public void Starter()
{
ApexPages.PageReference report = new ApexPages.PageReference('/00O90000003Qn7T?excel=1'); //sandbox
        Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
        attachment.setFileName('TestReport.xls');
        attachment.setBody(report.getContent());
        attachment.setContentType('text/csv');
        Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
        message.setFileAttachments(new Messaging.EmailFileAttachment[] { attachment } );
        message.setSubject('TEst Report');
        message.setHtmlBody('Dear All,<br><br/>Please Find Attached the Report Excel File.<br/>');
        message.setToAddresses( new String[] { 'MY EMAIL ID'} );
        Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
}
 
     global void execute(SchedulableContext sc) {
        ApexPages.PageReference report = new ApexPages.PageReference('/00O90000003Qn7T?excel=1'); //sandbox
        Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
        attachment.setFileName('TestReport.xls');
        attachment.setBody(report.getContent());
        attachment.setContentType('text/csv');
        Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
        message.setFileAttachments(new Messaging.EmailFileAttachment[] { attachment } );
        message.setSubject('TEst Report');
        message.setHtmlBody('Dear All,<br><br/>Please Find Attached the Report Excel File.<br/>');
        message.setToAddresses( new String[] { 'MY EMAIL ID'} );
        Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
       
     }
}
 

 

Kindly I request your expert advise.

 

Regards,

San

 

 

  • May 16, 2013
  • Like
  • 0

Hello Gurus,

 

I want to run the schedular class as a specific user rather than System.

Is it possible?

Any clues or samples or suggestions.

 

Thanks,

San

  • May 17, 2013
  • Like
  • 0

Hi Everybody,

I have the below Simple apex code 

 

global class ReportTest1 implements System.Schedulable{
     global void execute(SchedulableContext sc) {
        ApexPages.PageReference report = new ApexPages.PageReference('/00O90000003Qn7T?excel=1'); //sandbox
        Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
        attachment.setFileName('TestReport.xls');
        attachment.setBody(report.getContent());
        attachment.setContentType('text/csv');
        Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
        message.setFileAttachments(new Messaging.EmailFileAttachment[] { attachment } );
        message.setSubject('TEst Report');
        message.setHtmlBody('Dear All,<br><br/>Please Find Attached the Report Excel File.<br/>');
        message.setToAddresses( new String[] { 'MY EMAIL ID'} );
        Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
       
     }
}

 

 

Now i am scheduling this for running Every 5 hours and the scheduler runs fine , but i get the blank report.


Now if i change the above class to below , I get a perfect Report when CONSTRUCTOR IS invoked but When scheduler is run i get a blank report   :(

 

global class ReportTest1 implements System.Schedulable{
public ReportTest1()
{
Starter();
}
public void Starter()
{
ApexPages.PageReference report = new ApexPages.PageReference('/00O90000003Qn7T?excel=1'); //sandbox
        Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
        attachment.setFileName('TestReport.xls');
        attachment.setBody(report.getContent());
        attachment.setContentType('text/csv');
        Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
        message.setFileAttachments(new Messaging.EmailFileAttachment[] { attachment } );
        message.setSubject('TEst Report');
        message.setHtmlBody('Dear All,<br><br/>Please Find Attached the Report Excel File.<br/>');
        message.setToAddresses( new String[] { 'MY EMAIL ID'} );
        Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
}
 
     global void execute(SchedulableContext sc) {
        ApexPages.PageReference report = new ApexPages.PageReference('/00O90000003Qn7T?excel=1'); //sandbox
        Messaging.EmailFileAttachment attachment = new Messaging.EmailFileAttachment();
        attachment.setFileName('TestReport.xls');
        attachment.setBody(report.getContent());
        attachment.setContentType('text/csv');
        Messaging.SingleEmailMessage message = new Messaging.SingleEmailMessage();
        message.setFileAttachments(new Messaging.EmailFileAttachment[] { attachment } );
        message.setSubject('TEst Report');
        message.setHtmlBody('Dear All,<br><br/>Please Find Attached the Report Excel File.<br/>');
        message.setToAddresses( new String[] { 'MY EMAIL ID'} );
        Messaging.sendEmail( new Messaging.SingleEmailMessage[] { message } );
       
     }
}
 

 

Kindly I request your expert advise.

 

Regards,

San

 

 

  • May 16, 2013
  • Like
  • 0