function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
withoutmewithoutme 

List of scheduled reports

As an administrator, how do I get a list of all the reports that are scheduled to be run and emailed to diff users?

I need, report name, schedule time and user being emailed to.

Please help. Thank you

-Vj 

Best Answer chosen by Admin (Salesforce Developers) 
MATTYBMEMATTYBME

You can do some of this via Scheduled Jobs.

 

Go to Setup>Adminitstration Setup>Monitoring>Sceduled Jobs

 

Here you can see what reports are scheduled to run with info like when the Report Started to run (Scheduled) when it is due to run next and who submitted the Report to run.

 

The only thing it will not tell you are the Users the report is to be emailed to. The only way that you can do this is to look at the Report Schedule itself and determinewho the report is to beemailed to.

All Answers

MATTYBMEMATTYBME

You can do some of this via Scheduled Jobs.

 

Go to Setup>Adminitstration Setup>Monitoring>Sceduled Jobs

 

Here you can see what reports are scheduled to run with info like when the Report Started to run (Scheduled) when it is due to run next and who submitted the Report to run.

 

The only thing it will not tell you are the Users the report is to be emailed to. The only way that you can do this is to look at the Report Schedule itself and determinewho the report is to beemailed to.

This was selected as the best answer
withoutmewithoutme

Thank you.

I wish there was a way to run reports on reports!!!!! 

NonickSMSNonickSMS
Old thread, but you know you can do this right? It's under Administrative reports. Stuff like who created it and when last run.
desmoquattrodesmoquattro

One more thought: Is there a way to tell that ascheduled report actually ran and sent out the email? Maybe in the debug logs?

BdavisBOKFBdavisBOKF

It would also be nice to be able to see who the report is scheduled to run as, not just who submitted it.  We recently had a SF admin leave the company.  They submitted 100+ jobs to be run in the future.  Currently the only way to see what id this is running as is to go into each scheduled report, across each instance, and change it.  What we need is something along the lines of a column that shows the running user as well so we can quickly see which ones need updating.

NonickSMSNonickSMS

You can extract reports using eclipse. The format is similar to xml, with open and close tags. I've recently written  a small python program to take a csv input with 4 columns (name of file | start string | end string | change to). Put the dashboards or reports you want in the same folder as the program and create folder 'out' in the same location. Run the program and it'll put all the reports, modified into that folder.

Not fool proof as it'll respond to the first iteration of string, but should be enough to get you started:

 

 

import getopt
import sys
import csv
import os

class Replacer:
    def __init__(self, bdir, fname, sfrom, sto, sval):
        self.bdir = bdir
        self.fname = fname
        self.sfrom = sfrom.replace('\n', '')
        self.sto = sto
        self.sval = sval
    def doit(self):
        infname = os.path.join(self.bdir, self.fname)
        outfname = os.path.join(self.bdir, 'out', self.fname)
        ifp = open(infname, 'rb')
        ofp = open(outfname, 'w')
        lines = ifp.readlines()
        cnt = 0
        longLine = ''
        for line in lines:
            longLine += line.replace('\n', '')
        if longLine.find(self.sfrom) >= 0 and longLine.find(self.sto) >= 0:
            sndx = longLine.find(self.sfrom) + len(self.sfrom)
            endx = sndx + longLine[sndx:].find(self.sto)
            oldval = longLine[sndx:endx]
            tmp = longLine[:sndx] + self.sval + longLine[endx:]
            longLine = tmp
            print "replaced <%s> to <%s>\n" % (oldval, self.sval)
            ++cnt
        ofp.write(longLine)
        ofp.close()
        ifp.close()
        
        return cnt
        
def main():
    def usage():
        print "usage: %s -c config_file_name\n" % sys.argv[0]
    try:
        opts, args = getopt.getopt(sys.argv[1:], "c:")
    except getopt.GetoptError, err:
        # print help information and exit:
        print str(err) # will print something like "option -a not recognized"
        usage()
        sys.exit(2)
    configFileName = ""
    for o, a in opts:
        if o in ("-c"):
            configFileName = a
        else:
            assert False, "unhandled option"
    print "configFileName: %s\n" % configFileName
    csvReader = csv.reader(open(configFileName), delimiter=',', quotechar='"')
    pathname = os.path.dirname(sys.argv[0])
    for row in csvReader:
        print "file: %s from: %s till: %s val: %s" % (row[0], row[1], row[2], row[3])
        replacer = Replacer(pathname, row[0], row[1], row[2], row[3])
        replacer.doit()

if __name__ == "__main__":
    main()