Can scheduled reports send personal summaries?

peterraeves
Mega Guru

Before I go out scripting, I was wondering if there was a simple way to do the following. I want to send out reports on a regular interval, that contain a summary of the incidents logged by a certain user. Every time the user should receive a pdf with the list containing all incidents he logged from the last time this report was send.

Therefore, we don't know up front who we will be sending to and we don't want to make a scheduled report for every user, and only sending it when it isn't empty. I haven't tried this yet, but I could probably have a script that loops over all assignees for that period of time, that sets up scheduled reports that would run as that user and that would have the list conditioned on "assigned_to = gs.getUserID()", but I was wondering if there was a more OOTB, cleaner way to do this.

1 ACCEPTED SOLUTION

I did fix this problem. What you need to do is


1) Create the report to use "dynamic = me". For example "opened by - is dynamic - me"


2) Create a template for the schedule you want to run


3) Create a Scheduled Script that will use the template to create new ScheduleOnce schedules for all users or groups you want. The script will set the "run as" field to the specific user and let the schedule run for that user.



In step 2) I originally used a Script Include to create the schedule:


        var scheduled_report = new GlideRecord('sysauto_report');


        //Set the scheduled job to active


        scheduled_report.active = 'true';




      //We add report title and user name to the name for clarity


      scheduled_report.name = ''


              + 'Scheduled Email Report of '


              + report.title


              + ' - '


              + user.name;




      //Run report as given user to show only his records


      scheduled_report.run_as = user.sys_id;


      //Sent report to same user, so he receives his own report


      scheduled_report.user_list = user.sys_id;


      //Only send the report once


      //It will be rescheduled if needed


      scheduled_report.run_type = 'once';


      scheduled_report.report_title = subject;


    scheduled_report.report_body = body;


    scheduled_report.report = report.sys_id;


    scheduled_report.omit_if_no_records = omit;



      //Now, insert the newly created scheduled job to start running


      //As it is a "once" job, it will run automatically


      var answer = scheduled_report.insert();


The function had parameters like "user" and "report", but I just recently discovered that there is an OOTB script include for this functionality. So it might be better to check that one out as well. It's an object called "ScheduleOnce" and is an extension of the "Schedule" object.


View solution in original post

27 REPLIES 27

The last part will run the job, as I mentioned in the comment


//Now, insert the newly created scheduled job to start running


//As it is a "once" job, it will run automatically


var answer = scheduled_report.insert();


Seeing as it is a "once" job, SN will automatically detect you want to run it.


Community Alums
Not applicable

Not following much..

Is #2 an Email Template

Is #3 where is the scheduled script calling the email template? Not following here..

 

I have a report that should be sent to each user weekly on their task_sla summary. showing the breached and non breached. I have the report. But how do I send that to each user in a separate email?

Hi! Will this work on conditions for Catalog Variables, too? Let's say I have a variable Supervisor on my form and I want to filter my report based on the Supervisor (if he/she is the logged in user). Instead of using "opened by - is dynamic - me", can I use that as a dynamic filter?

Thanks!

I've tried but it seems like the "is (dynamic)" is not available when using catalog variable in condition even when that variables is a Reference to the User table.

find_real_file.png

pratik_kumar
Giga Expert

Hi Peter,



Can you help me on this requirement.



I want to schedule a report for all assignment group managers.



Like i a want to create a single incident report but it should be sent to all assignment group mangers containing relevant incident records.



Example : A incident report have 20 record which belongs to Assignment group "a" and Assignment group "b". there are 11 records assigned to group "a" and 9 record assigned to group "b".I want managers of Group "a" and group "b" to receive there respective records,(this is an example in our live instance we have more than 150 groups)



Please provide your input.



Regards,


Pratik