I can get a case like this:
JavaScript
x
32
32
1
function getCase() {
2
3
var access_token = authenticateSF();
4
5
var baase = 'https://company.salesforce.com/services/data/v50.0/';
6
var caseNum = '12345';
7
8
var url = base + "query?q=SELECT+CaseNumber,Document_No__c+from+Case+WHERE+CaseNumber='" + caseNum + "'";
9
10
11
var myBody = ''; // {"Document_No__c":"x"};
12
var headers = {
13
"Authorization": 'Bearer ' + access_token,
14
"Accept": "application/json"
15
};
16
17
var params = {
18
'method': 'GET',
19
'muteHttpExceptions': true,
20
'headers': headers,
21
'contentType': 'application/json',
22
'payload': myBody
23
};
24
25
var res = UrlFetchApp.fetch(url, params);
26
27
var myObj = JSON.parse(res.getContentText());
28
29
Logger.log(myObj)
30
31
}
32
This returns
JavaScript
1
2
1
{records=[{attributes={url=/services/data/v50.0/sobjects/Case/12345, type=Case}, CaseNumber=12345, Document_No__c=null}], done=true, totalSize=1.0}
2
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:
JavaScript
1
32
32
1
function getCase() {
2
3
var access_token = authenticateSF();
4
5
var baase = 'https://company.salesforce.com/services/data/v50.0/';
6
var caseNum = '12345';
7
8
var url = base + "query?q=SELECT+CaseNumber,Document_No__c+from+Case+WHERE+CaseNumber='" + caseNum + "'";
9
10
var myString = 'myString'
11
var myBody = {"Document_No__c":myString};
12
var headers = {
13
"Authorization": 'Bearer ' + access_token,
14
"Accept": "application/json"
15
};
16
17
var params = {
18
'method': 'PATCH',
19
'muteHttpExceptions': true,
20
'headers': headers,
21
'contentType': 'application/json',
22
'payload': myBody
23
};
24
25
var res = UrlFetchApp.fetch(url, params);
26
27
var myObj = JSON.parse(res.getContentText());
28
29
Logger.log(myObj)
30
31
}
32
However this is returning the error:
JavaScript
1
4
1
405
2
Message: HTTP Method 'PATCH' not allowed. Allowed are HEAD,GET
3
Error: METHOD_NOT_ALLOWED
4
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:
JavaScript
1
32
32
1
function getCase() {
2
3
var access_token = authenticateSF();
4
5
var baase = 'https://company.salesforce.com/services/data/v50.0/';
6
var caseNum = '12345';
7
8
var url = base + 'sobjects/Case/CaseNumber/' + caseNum;
9
10
var myString = 'myString'
11
var myBody = {"Document_No__c":myString};
12
var headers = {
13
"Authorization": 'Bearer ' + access_token,
14
"Accept": "application/json"
15
};
16
17
var params = {
18
'method': 'PATCH',
19
'muteHttpExceptions': true,
20
'headers': headers,
21
'contentType': 'application/json',
22
'payload': JSON.stringify(myBody)
23
};
24
25
var res = UrlFetchApp.fetch(url, params);
26
27
var myObj = JSON.parse(res.getContentText());
28
29
Logger.log(myObj)
30
31
}
32
This is confirmed by the response:
JavaScript
1
3
1
200
2
{success=true, errors=[], created=false, id=id_num}
3