Offline persistence of formula field calculations
Please see previous discussion about formula fields and stale data.
To persist formula fields from the Javascript API, you must call calculateSaveFormulas
.
var request = { "type" : "calculateSaveFormulas", "object" : "Some_Custom_Object__c", // the object type "data" : { // optional list of objectIds (must be of the same object type as specified. "objectIds" : [ "a025000000iW9YuAAK", "a0250000005thYuAnp" ], // optional where clause (additional way to select specific objects) "whereClause" : "Type = 'Bodega' OR Type = 'Supermarket'", // optional list of specific formula fields to calculate. If you don't pass this parameter, it will calculate and save all formulas. "formulaFields" : [ "Total_Price__c", "Some_Other_Formula_Field__c" ] } }; bridge.sendRequest(request, function (responseData) { alert('Javascript got its calculateSaveFormulas response: ' + responseData); });
WARNING: this can be an incredibly expensive and slow operation if you do not specify any filter criteria. Therefore we recommend that you always include objectIds
and/or whereClause
parameters.
HTTP Callout API
The callout API is available for making HTTP(S) requests from the Pulsar platform and returning results to the HTML and javascript. Since custom HTML/javascript code is hosted as a local file within Pulsar, there can be issues using the normal XMLHttpRequest (XHR) or fetch methods to issue Cross-Origin requests to external services. This Pulsar API helps sidestep those problems.
var request = { type: 'callout', object: '', data: { resource: 'https://my.org.instance.salesforce.com/api/resources', options: { method: 'POST', // or GET, PUT, DELETE, etc... headers: { // header name-value pairs, as shown below Authorization: 'Bearer AABBEEAARREERRTTOOKKEENN....', Content-Type: 'application/json', }, body: 'my post content body!', } } }; pulsarBridge.sendRequest(request, function (result) { if (result.type === 'calloutResponse') { var response = result.data; console.log('Response Status Code: '+response.status); // string console.log('Response Data:'+response.body); // string } else { console.log('failed: '+ result.data) } });