Using Google Apps Script to Post JSON Data

2019-02-05 05:06发布

Server response  :  HTTP Status 415 - Unsupported Media Type

I am trying to post JSON data to the URL from google script but getting the above error. Here is my code:

function myFunctionpost() {
  var url = "http://abc.xyz.org/jira/rest/api/2/issue";
  var data = {"project":{ "key": "KEY"},"summary": "create issue.", "description":                 "Creating of an issue from google spreadsheet using the REST API", "issuetype": {"name": "Bug"}}  ;
   var payload = JSON.stringify(data);

   var headers = { "Accept":"application/json", 
              "Content-Type":"application/json", 
              "Authorization":"Basic _authcode_"
             };

   var options = { "method":"POST",
                "headers": headers,
                "payload" : payload
               };
   var response = UrlFetchApp.fetch(url, options);
 Logger.log(response);  

 }

I tried changing the content-type but didn’t work .The authcode is working because I am able to GET from the URL.

Anybody has any idea about where I am going wrong? Thanks.

2条回答
别忘想泡老子
2楼-- · 2019-02-05 05:26

Put in your options object a contentType like this:

 var options = { "method":"POST",
             "contentType" : "application/json",
            "headers": headers,
            "payload" : payload
           };

ContentType is one of the advanced parameters that the fetch method accepts. See more here.

查看更多
Juvenile、少年°
3楼-- · 2019-02-05 05:37

It is pretty counter intuitive in UrlFetchApp syntax but this:

POST /api/ra/v1/ping HTTP/1.0
Host: app.kigo.net
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
Content-Type: application/json

Translates nicely to this curl:

curl https://app.kigo.net/api/ra/v1/ping -X POST -H "Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=" -H "Content-Type: application/json"

Translates to this in Google App Script:

    function myFunction() {

  var headers = { 
    "Authorization" : "Basic dXNlcm5hbWU6cGFzc3dvcmQ="
  };

  var options =
   {
     "contentType" : "application/json",
     "method" : "post",
     "headers" : headers,
     "payload" : "test"
   };

  var response = UrlFetchApp.fetch("https://app.kigo.net/api/ra/v1/ping", options);  
}
查看更多
登录 后发表回答