I can get a case like this:
function getCase() { var access_token = authenticateSF(); var baase = 'https://company.salesforce.com/services/data/v50.0/'; var caseNum = '12345'; var url = base + "query?q=SELECT+CaseNumber,Document_No__c+from+Case+WHERE+CaseNumber='" + caseNum + "'"; var myBody = ''; // {"Document_No__c":"x"}; var headers = { "Authorization": 'Bearer ' + access_token, "Accept": "application/json" }; var params = { 'method': 'GET', 'muteHttpExceptions': true, 'headers': headers, 'contentType': 'application/json', 'payload': myBody }; var res = UrlFetchApp.fetch(url, params); var myObj = JSON.parse(res.getContentText()); Logger.log(myObj) }
This returns
{records=[{attributes={url=/services/data/v50.0/sobjects/Case/12345, type=Case}, CaseNumber=12345, Document_No__c=null}], done=true, totalSize=1.0}
I would like to update Document_No__c
to myString
I was expecting to be able to change this to a patch
and add the payload like this:
function getCase() { var access_token = authenticateSF(); var baase = 'https://company.salesforce.com/services/data/v50.0/'; var caseNum = '12345'; var url = base + "query?q=SELECT+CaseNumber,Document_No__c+from+Case+WHERE+CaseNumber='" + caseNum + "'"; var myString = 'myString' var myBody = {"Document_No__c":myString}; var headers = { "Authorization": 'Bearer ' + access_token, "Accept": "application/json" }; var params = { 'method': 'PATCH', 'muteHttpExceptions': true, 'headers': headers, 'contentType': 'application/json', 'payload': myBody }; var res = UrlFetchApp.fetch(url, params); var myObj = JSON.parse(res.getContentText()); Logger.log(myObj) }
However this is returning the error:
405 Message: HTTP Method 'PATCH' not allowed. Allowed are HEAD,GET Error: METHOD_NOT_ALLOWED
Advertisement
Answer
I needed to point to the right end point, as well as use @Tanaike’s change to the payload. Completed code example is:
function getCase() { var access_token = authenticateSF(); var baase = 'https://company.salesforce.com/services/data/v50.0/'; var caseNum = '12345'; var url = base + 'sobjects/Case/CaseNumber/' + caseNum; var myString = 'myString' var myBody = {"Document_No__c":myString}; var headers = { "Authorization": 'Bearer ' + access_token, "Accept": "application/json" }; var params = { 'method': 'PATCH', 'muteHttpExceptions': true, 'headers': headers, 'contentType': 'application/json', 'payload': JSON.stringify(myBody) }; var res = UrlFetchApp.fetch(url, params); var myObj = JSON.parse(res.getContentText()); Logger.log(myObj) }
This is confirmed by the response:
200 {success=true, errors=[], created=false, id=id_num}