Introduction:
In today's digital age, efficient data management and sharing across platforms are crucial for businesses to thrive. Salesforce and SharePoint are two powerful tools that many organizations utilize to manage customer relationships and collaborate on documents. In this blog, we will provide a step-by-step guide along with full working code on how to generate a Salesforce report in CSV format and upload it to a SharePoint site using Apex, Salesforce's programming language.
Step 1: Prerequisites
- Ensure you have the necessary permissions to access and generate reports in Salesforce.
- Have a valid SharePoint site URL and appropriate permissions to upload files.
- Basic knowledge of Salesforce Apex programming.
Step 2: Generate the Salesforce Report in CSV
To generate a Salesforce report in CSV format, we'll utilize the built-in reporting functionality and then convert the report data into CSV format.
// Apex code to generate Salesforce report in CSV
String reportId = 'YOUR_REPORT_ID';
String reportCsv = Reports.exportReport(reportId, Reports.FileFormat.CSV);
Step 3: Prepare SharePoint Upload
Before uploading the CSV to SharePoint, we need to prepare the file and authentication headers.
// Apex code to prepare SharePoint upload
String sharepointUrl = 'YOUR_SHAREPOINT_URL';
String sharepointLibrary = 'DOCUMENT_LIBRARY_NAME';
String accessToken = 'YOUR_SHAREPOINT_ACCESS_TOKEN';
String uploadUrl = sharepointUrl + "/_api/web/lists/getByTitle('" + sharepointLibrary + "')/RootFolder/Files/Add(url='report.csv', overwrite=true)";
Step 4: Perform the Upload
Using Apex's HttpRequest class, we'll perform the actual file upload to SharePoint.
// Apex code to perform file upload to SharePoint
HttpRequest request = new HttpRequest();
request.setEndpoint(uploadUrl);
request.setMethod('POST');
request.setHeader('Authorization', 'Bearer ' + accessToken);
request.setHeader('Content-Type', 'application/octet-stream');
request.setBody(Blob.valueOf(reportCsv));
Http http = new Http();
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
System.debug('File uploaded successfully');
} else {
System.debug('File upload failed with status code: ' + response.getStatusCode());
}
Step 5: Putting it All Together
Now, let's bring all the code snippets together into a single Apex class.
public class SalesforceToSharePoint {
public static void uploadReportToSharePoint() {
String reportId = 'YOUR_REPORT_ID';
String reportCsv = Reports.exportReport(reportId, Reports.FileFormat.CSV);
String sharepointUrl = 'YOUR_SHAREPOINT_URL';
String sharepointLibrary = 'DOCUMENT_LIBRARY_NAME';
String accessToken = 'YOUR_SHAREPOINT_ACCESS_TOKEN';
String uploadUrl = sharepointUrl + "/_api/web/lists/getByTitle('" + sharepointLibrary + "')/RootFolder/Files/Add(url='report.csv', overwrite=true)";
HttpRequest request = new HttpRequest();
request.setEndpoint(uploadUrl);
request.setMethod('POST');
request.setHeader('Authorization', 'Bearer ' + accessToken);
request.setHeader('Content-Type', 'application/octet-stream');
request.setBody(Blob.valueOf(reportCsv));
Http http = new Http();
HttpResponse response = http.send(request);
if (response.getStatusCode() == 200) {
System.debug('File uploaded successfully');
} else {
System.debug('File upload failed with status code: ' + response.getStatusCode());
}
}
}
Conclusion:
By following the steps outlined in this guide, you can seamlessly generate a Salesforce report in CSV format and upload it to a SharePoint site using Apex code. This integration streamlines data sharing and management across platforms, enhancing collaboration and efficiency within your organization. Always ensure you have the necessary permissions and access credentials before implementing such solutions. Happy coding!