Prepare a package.xml file and download it
Run below code in Execute Anonymous Window using Developer Console. It will send package.xml file in your email. Don’t forget to update your email address in below code.
String packageg = '<?xml version="1.0" encoding="UTF-8"?><Package xmlns="http://soap.sforce.com/2006/04/metadata"><types>';
Map<String, String> folderinfo = new Map<String, String>();
for(Folder rp: [select Name, developername from Folder where type='Report']){
folderinfo.put(rp.name, rp.developername);
}
for(Report rp: [select id, FolderName, name, developername, description from report where NamespacePrefix = null]){
if(folderinfo.containsKey(rp.FolderName)){
packageg +='<members>'+folderinfo.get(rp.FolderName)+'/'+ rp.developername+'</members>';
}
}
packageg += '<name>Report</name>';
packageg += '</types><version>48.0</version></Package>';
Messaging.EmailFileAttachment csvAttcmnt = new Messaging.EmailFileAttachment ();
blob csvBlob = Blob.valueOf (packageg);
string csvname = 'Package.XML';
csvAttcmnt.setFileName(csvname);
csvAttcmnt.setBody (csvBlob);
Messaging.SingleEmailMessage singEmail = new Messaging.SingleEmailMessage ();
String [] toAddresses = new list<string> {'ayub.a@grazitti.com'};
singEmail.setToAddresses (toAddresses);
String subject ='Report Pull- Package.xml';
singEmail.setSubject (subject);
singEmail.setPlainTextBody ('Package XML for report');
singEmail.setFileAttachments (new Messaging.EmailFileAttachment []{csvAttcmnt});
Messaging.SendEmailResult [] r = Messaging.sendEmail (new Messaging.SingleEmailMessage [] {singEmail})
Retrieve Reports using Package.xml
Now, you login in org using workbench and retrieve all Reports using above received package.xml.

We can retrieve all reports in Salesforce using VS Code with the Salesforce Extension Pack too. This is often more efficient than using the UI, especially when you need to retrieve multiple reports or move them across environments.
Comments are closed.