Skip to main content

Latest Post

Agentforce: One Agent, Six Layers

 The Big Picture (Start Here) ⚡ 1-Minute Summary •   An agent understands language, decides what to do, and acts. A chatbot only answers. •   Every example in this notebook uses one company: Meridian Power. Same company, every module. •   Learn the 360 Card first (0.5). It is the shape of every good answer: rule, gain, price, limits. Module map MODULE 0 root: 'What is Agentforce, and how do the modules fit together?' ├─ 0.1 The map: one agent, six layers ├─ 0.2 Meridian Power — the example company ├─ 0.3 Key terms in plain words ├─ 0.4 The rename map (2024-2026) └─ 0.5 The 360 Card — how to answer any question 0.1   The Map: One Agent, Six Layers 💬 In plain words:   Agentforce looks like many products. It is not. It is one agent with six layers stacked under it. Each layer answers one question, and each module of this notebook lives on one layer. 📌 Example:   A customer types "my power is out." Identity decides whose dat...

Generating Salesforce Report in CSV and Uploading to SharePoint using Apex - A Comprehensive Guide

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.

Generating Salesforce Report in CSV and Uploading to SharePoint using Apex - A Comprehensive Guide


Step 1: Prerequisites

  1. Ensure you have the necessary permissions to access and generate reports in Salesforce.
  2. Have a valid SharePoint site URL and appropriate permissions to upload files.
  3. 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!

Popular Posts

Upload document using rest api from apex class salesforce

 Here is working class example to upload file from apex salesforce.

Salesforce LWC Code for Multi-Select Lookup

Introduction: In Salesforce Lightning Web Components (LWC), implementing a multi-select lookup field can enhance the user experience and provide greater flexibility for selecting multiple related records. In this blog post, we will walk through the process of creating a multi-select lookup field using LWC. We will cover the required code snippets and provide step-by-step instructions to help you implement this functionality in your Salesforce org.