Skip to content

Instantly share code, notes, and snippets.

@sfdcale
Last active January 23, 2018 18:13
Show Gist options
  • Save sfdcale/fa0423dc198c8c30d6ba9a66cff0e8d6 to your computer and use it in GitHub Desktop.
Save sfdcale/fa0423dc198c8c30d6ba9a66cff0e8d6 to your computer and use it in GitHub Desktop.
Code to retrieve all reports in Salesforce
//First query all ReportFolders in the org.
Map<Id,Folder> folderMap = new Map<Id,Folder>([SELECT Id,
DeveloperName,
NameSpacePrefix
FROM Folder
WHERE
Type = 'Report']);
//Query all reports in the system.
List<Report> reportList = [SELECT FolderName,
DeveloperName,
OwnerId,
NameSpacePrefix
FROM Report
USING SCOPE everything];
List<String> reportNames = new List<String>();
for(Report reportObj: reportList){
String reportName;
//If a report is inside the folder then we should get the folder name also.
//If report is in public folders then we should prefix with "unfiled$public"
//We should also check for Managed package reports. If namspace is not blank then prepend foldername and reportname followed
//by '__'
if(folderMap.containsKey(reportObj.OwnerId)){
if(String.isNotBlank(folderMap.get(reportObj.OwnerId).NameSpacePrefix)){
reportName = folderMap.get(reportObj.OwnerId).NameSpacePrefix + '__' + folderMap.get(reportObj.OwnerId).DeveloperName;
}else{
reportName = folderMap.get(reportObj.OwnerId).DeveloperName;
}
if(String.isNotBlank(reportObj.NameSpacePrefix)){
reportName = reportName + '/' + reportObj.NameSpacePrefix + '__' + reportObj.DeveloperName;
}else{
reportName = reportName + '/' + reportObj.DeveloperName;
}
reportNames.add(reportName);
}else{
if(String.isNotBlank(reportObj.NameSpacePrefix)){
reportName = 'unfiled$public/' + reportObj.NameSpacePrefix + '__' + reportObj.DeveloperName;
}else{
reportName = 'unfiled$public/' + reportObj.DeveloperName;
}
reportNames.add(reportName);
}
}
System.debug(JSON.serialize(reportNames));
//Once all report names are printed, we can prepare package file and retrieve reports from Org.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment