Salesforce Bulk Job CSV Upload via Google Apps Scr

2019-08-04 11:32发布

问题:

I'm attempting to use Google Apps Script to access Salesforce's Bulk API 2.0 and upload the CSV data to a job, however Salesfore is returning

[{"errorCode":"METHOD_NOT_ALLOWED","message":"HTTP Method 'GET' not allowed. Allowed are PUT"}]

Given my experience with the Salesforce API, I highly doubt the issue is actually with the method type, but that there is some other validation which is causing this error. However, upon inspection of the request body and comparing it to what I successfully submit through cURL, I don't see what I can do to resolve.

The request code:

var headers = {
  "Authorization": "Bearer TOKEN"
};
var options = {
  "method": "put",
  "contentType": "text/csv",
  "headers": headers,
  "payload": "Id,Entity_Name__c\n001,One\n002,Two\n003,Three"
};
var url = INSTANCE + "/services/data/v44.0/jobs/ingest/" + JOB_ID + "/batches";
UrlFetchApp.fetch(url, options);

Google Apps Script request as returned via getRequest():

{
  "headers": {
    "Authorization": "Bearer TOKEN"
  },
  "method": "put",
  "payload": "Id,Entity_Name__c\n001,One\n002,Two\n003,Three",
  "followRedirects": true,
  "validateHttpsCertificates": true,
  "useIntranet": false,
  "contentType": "text/csv",
  "url": "INSTANCE/services/data/v44.0/jobs/ingest/JOB_ID/batches"
}

cURL request:

curl --request PUT \
  --url INSTANCE/services/data/v44.0/jobs/ingest/JOB_ID/batches \
  --header 'authorization: Bearer TOKEN' \
  --header 'content-type: text/csv' \
  --data '"Id,Entity_Name__c\n001,One\n002,Two\n003,Three"'

How can I resolve this?