Delete scheduled reports along with reports

othomas1
Kilo Guru

Good Morning everyone,

 

I am working on a script to remove reports based on a give criteria, I need some assistance with adding to it. I need to add the removal of scheduled reports as well. I gave it a try in my code below but it did not turn out well. Can anyone see if im headed in the right direction?

 

Current Script:

(function myReports() {

reportsArray = [];
var reports = 0;
var repo_old = 0;

var repoStats = new GlideRecord('report_stats');

repoStats.addEncodedQuery('report_sys_id.created_by_user.active=true^ORreport_sys_id.created_by_user.active=false^ORnumber_executions_total=0^ORreport_sys_id.created_by_userISEMPTY^sys_updated_onRELATIVELT@month@ago@13^report_sys_id.created_by_user!=6816f79cc0a8016401c5a33be04be441^report_sys_id.created_by_user.roles!=report_group^report_sys_id.created_by_user.roles!=gauge_maker^report_sys_id.created_by_user.roles!=bcbsla_homepage_editor^report_sys_id.user!=GLOBAL');

repoStats.query();
reports = repoStats.getRowCount();

while(repoStats.next()) {

var sRep = new GlideRecord ('sysauto_report_list');
sRep.addQuery('name', repoStats.report_sys_id);
sRep.query();

while(sRep.next()) {

reportsArray.push(repoStats.report_sys_id.title.toString());
}
for(i=0; i<reportsArray.length; i++){
var repo = new GlideRecord('sys_report') ;
repo.addQuery('title',reportsArray[i]);
repo.query();
repo_old = repo.getRowCount();
if(repo.next()){

}
}
}
gs.log('Scheduled report -' + sRep + 'to be removed');
gs.log('Number of reports found - ' + reports + ' will be removed');
gs.log('These are the names of the reports -' + reportsArray.join('\n')+ ' ');
//repo.deleteMultiple();

})();

6 REPLIES 6

Prateek kumar
Mega Sage

This line should be 

var sRep = new GlideRecord ('sysauto_report');


Please mark my response as correct and helpful if it helped solved your question.
-Thanks

Thank you for catching that Prateek,

 

I updated my script like below:

 

(function myReports() {

reportsArray = [];
var reports = 0;
var repo_old = 0;
var scheduled = 0;

var repoStats = new GlideRecord('report_stats');

repoStats.addEncodedQuery('report_sys_id.created_by_user.active=true^ORreport_sys_id.created_by_user.active=false^ORnumber_executions_total=0^ORreport_sys_id.created_by_userISEMPTY^sys_updated_onRELATIVELT@month@ago@13^report_sys_id.created_by_user!=6816f79cc0a8016401c5a33be04be441^report_sys_id.created_by_user.roles!=report_group^report_sys_id.created_by_user.roles!=gauge_maker^report_sys_id.created_by_user.roles!=bcbsla_homepage_editor^report_sys_id.user!=GLOBAL');

repoStats.query();
reports = repoStats.getRowCount();

while(repoStats.next()) {

var sRep = new GlideRecord ('sysauto_report');
sRep.addQuery('name', repoStats.report_sys_id);
sRep.query();
scheduled = sRep.getRowCount();

while(sRep.next()) {

reportsArray.push(repoStats.report_sys_id.title.toString());
}
for(i=0; i<reportsArray.length; i++){
var repo = new GlideRecord('sys_report') ;
repo.addQuery('title',reportsArray[i]);
repo.query();
repo_old = repo.getRowCount();
if(repo.next()){

}
}
}
gs.log('Scheduled report -' + sRep.getDisplayValue() + 'to be removed');
gs.log('Number of reports found - ' + reports + ' will be removed');
gs.log('These are the names of the reports -' + reportsArray.join('\n')+ ' ');
//repo.deleteMultiple();

})();

 

 

 

 

 

 

 

Output from script (now removing names on last line of log):

*** Script: Scheduled report -to be removed
*** Script: Number of reports found - 1243 will be removed
*** Script: These are the names of the reports -

This line should be 

sRep.addQuery('report', repoStats.report_sys_id);

Please mark my response as correct and helpful if it helped solved your question.
-Thanks

I used this script:

(function myReports() {

reportsArray = [];
var reports = 0;
var repo_old = 0;
var scheduled = 0;

var repoStats = new GlideRecord('report_stats');

repoStats.addEncodedQuery('report_sys_id.created_by_user.active=true^ORreport_sys_id.created_by_user.active=false^ORnumber_executions_total=0^ORreport_sys_id.created_by_userISEMPTY^sys_updated_onRELATIVELT@month@ago@13^report_sys_id.created_by_user!=6816f79cc0a8016401c5a33be04be441^report_sys_id.created_by_user.roles!=report_group^report_sys_id.created_by_user.roles!=gauge_maker^report_sys_id.created_by_user.roles!=bcbsla_homepage_editor^report_sys_id.user!=GLOBAL');

repoStats.query();
reports = repoStats.getRowCount();

while(repoStats.next()) {

var sRep = new GlideRecord ('sysauto_report');
sRep.addQuery('report', repoStats.report_sys_id);
sRep.query();
scheduled = sRep.getRowCount();

while(sRep.next()) {

reportsArray.push(repoStats.report_sys_id.title.toString());
}
for(i=0; i<reportsArray.length; i++){
var repo = new GlideRecord('sys_report') ;
repo.addQuery('title',reportsArray[i]);
repo.query();
repo_old = repo.getRowCount();
if(repo.next()){

}
}
}
gs.log('Scheduled report -' + scheduled + 'to be removed');
gs.log('Number of reports found - ' + reports + ' will be removed');
gs.log('These are the names of the reports -' + reportsArray.join('\n')+ ' ');
//repo.deleteMultiple();

})();

 

And this was the output:

 

*** Script: Scheduled report -0to be removed
*** Script: Number of reports found - 1243 will be removed
*** Script: These are the names of the reports -Story and Time Card Report List (shared) Story and Time Card Report List (shared) Story List Report (shared) History of incidnet reassigned groups History of incidnet reassigned groups App Services - Request Variables Reporting App Services - Request Variables Reporting cat report CAB Report - Active Change Requests User Information - Disaster Recovery


It seems like its cutting of the reports in the last log and not getting the reports in the first log.