![]() |
VOOZH | about |
Interact with Salesforce data from Google Sheets through macros, custom functions, and add-ons. The CData API Server enables connectivity to Salesforce data from cloud-based and mobile applications like Google Sheets. The API Server is a lightweight Web application that produces OData services for Salesforce.
Google Apps Script can consume these OData services in the JSON format. This article shows how to create a simple add-on that populates a Google Spreadsheet with Account data and, as you make changes, executes updates to Salesforce data.
Accessing and integrating live data from Salesforce has never been easier with CData. Customers rely on CData connectivity to:
Users frequently integrate Salesforce data with:
For more information on how CData solutions work with Salesforce, check out our Salesforce integration page.
If you have not already done so, download the CData API Server. Once you have installed the API Server, follow the steps below to begin producing secure Salesforce OData services:
To work with Salesforce data from Google Sheets, we start by creating and configuring a Salesforce connection. Follow the steps below to configure the API Server to connect to Salesforce data:
There are several authentication methods available for connecting to Salesforce: OAuth, Login (or basic), and SSO. The Login method requires you to have the username, password, and security token of the user.
The default authentication mechanism (and the one preferred by Salesforce) is OAuth. To use OAuth with CData's embedded OAuth application, leave the connection properties blank. If you have configured your own custom OAuth application with Salesforce (see the Help documentation for more information), set OAuthClientId, OAuthClientSecret, and CallbackURL to the properties for you application. Set InitiateOAuth to the desired OAuth flow ("GETANDREFRESH" will have the connector manage the entire OAuth flow).
If you do not wish do not wish to use OAuth authentication, you can use Login (or basic) authentication. Set AuthScheme to Basic, and set the User, Password, and SecurityToken properties. You can configure your security token in Salesforce.
SSO (single sign-on) can be used by setting the SSOProperties, SSOLoginUrl, and SSOExchangeURL connection properties, which allow you to authenticate to an identity provider. See the "Getting Started" chapter in the Help documentation for more information.
If your Salesforce org has MFA enforcement enabled, set MFACode to the time-based one-time passcode (TOTP) generated by your authenticator app (such as Salesforce Authenticator or Google Authenticator). MFACode applies to both OAuth and Login authentication flows.
π Connecting to a datasource (SQLite is shown)Next, create a user to access your Salesforce data through the API Server. You can add and configure users on the Users page. Follow the steps below to configure and create a user:
Having created a user, you are ready to create API endpoints for the Salesforce tables:
Having configured a connection to Salesforce data, created a user, and added resources to the API Server, you now have an easily accessible REST API based on the OData protocol for those resources. From the API page in API Server, you can view and copy the API Endpoints for the API:
π API EndpointsOpen the Script Editor from your spreadsheet by clicking Tools -> Script Editor. In the Script Editor, add the following function to populate a spreadsheet with the results of an OData query:
function retrieve(){
var url = "https://MyUrl/api.rsc/Account?select=Id,Industry,AnnualRevenue,Name";
var response = UrlFetchApp.fetch(url,{
headers: {"Authorization": "Basic " + Utilities.base64Encode("MyUser:MyAuthtoken")}
});
var json = response.getContentText();
var sheet = SpreadsheetApp.getActiveSheet();
var a1 = sheet.getRange('a1');
var index=1;
var account = JSON.parse(json).value;
var cols = [["Id","Industry","AnnualRevenue","Name"]];
sheet.getRange(1,1,1,4).setValues(cols);
row=2;
for(var i in account){
for (var j in account[i]) {
switch (j) {
case "Id":
a1.offset(row,0).setValue(account[i][j]);
break;
case "Industry":
a1.offset(row,1).setValue(account[i][j]);
break;
case "AnnualRevenue":
a1.offset(row,2).setValue(account[i][j]);
break;
case "Name":
a1.offset(row,3).setValue(account[i][j]);
break;
}
}
row++;
}
}
Follow the steps below to add an installable trigger to populate the spreadsheet when opened:
After closing the dialog, you are prompted to allow access to the application.
Add the following function to post changes to cells back to the API Server:
function buildReq(e){
var sheet = SpreadsheetApp.getActiveSheet();
var changes = e.range;
var id = sheet.getRange(changes.getRow(),1).getValue();
var col = sheet.getRange(1,changes.getColumn()).getValue();
var url = "http://MyServer/api.rsc/Account("+id+")";
var putdata = "{\"@odata.type\" : \"CDataAPI.Account\", \""+col+"\": \""+changes.getValue()+"\"}";;
UrlFetchApp.fetch(url,{
method: "put",
contentType: "application/json",
payload: putdata,
headers: {"Authorization": "Basic " + Utilities.base64Encode("MyUser:MyAuthtoken")}
});
}
Follow the steps below to add the update trigger:
You can test the script by clicking Publish -> Test as Add-On. Select the version, installation type, and spreadsheet to create a test configuration. You can then select and run the test configuration.
As you make changes to cells, the API Server executes updates to Salesforce data.
Learn more or sign up for a free trial:
CData API Server