Last active
January 23, 2018 18:13
-
-
Save sfdcale/fa0423dc198c8c30d6ba9a66cff0e8d6 to your computer and use it in GitHub Desktop.
Code to retrieve all reports in Salesforce
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//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