Home > front end >  Issue sending in method to UrlFetchApp.fetch in GAS
Issue sending in method to UrlFetchApp.fetch in GAS

Time:02-06

Stupid question here, but I am pulling my hair out (i'm bald) as to what I could possibly be doing wrong. I am doing a UrlFetchApp.fetch in google app scripts:

var result = UrlFetchApp.fetch(url, { headers: headers });

When using this as my headers, it works:

  var headers = {
    Authorization: 'Bearer '   getAccessToken()
  }

Now I need to pass in 'method' as 'PUT' instead of the default of 'GET' (above), and and trying like this:

  var headers = {
      method : 'put',
      headers : {
        Authorization: 'Bearer '   getAccessToken()
      }
  }

When I try sending this, it is not finding the token:

Exception: Request failed for https://api.spotify.com returned code 401. Truncated server response: {
  "error": {
    "status": 401,
    "message": "No token provided"
  }

How can I format the headers so that I can pass in the Authorization with token and also pass in 'method' as 'PUT'?

I see in the URLFetchApp.Fetch documentation for Google, that this is passed into options:

https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

headers Object  a JavaScript key/value map of HTTP headers for the request
method  String  the HTTP method for the request: get, delete, patch, post, or put. The default is get.

Thank you so much for any help!

phi

CodePudding user response:

I believe your goal is as follows.

  • You want to convert the following curl command to Google Apps Script. Ref And, from I know the call works with a simple GET method, your access token is valid.

      curl --request PUT \
        --url https://api.spotify.com/v1/me/player/play \
        --header 'Authorization: ' \
        --header 'Content-Type: application/json' \
        --data '{
        "context_uri": "spotify:album:5ht7ItJgpBH7W6vJ5BqpPr",
        "offset": {
          "position": 5
        },
        "position_ms": 0
      }'
    

In this case, how about the following sample script?

Sample script:

Please modify data for your actual situation.

var data = {
  "context_uri": "spotify:album:5ht7ItJgpBH7W6vJ5BqpPr",
  "offset": {
    "position": 5
  },
  "position_ms": 0
};
var options = {
  method: 'put',
  headers: { "Authorization": 'Bearer '   getAccessToken() },
  contentType: "application/json",
  payload: JSON.stringify(data)
};
var url = "https://api.spotify.com/v1/me/player/play";
var res = UrlFetchApp.fetch(url, options);
console.log(res.getContentText());

Note:

  • I think that this request is the same as the curl command. But if an error occurs, please check the access token and the values in data, again.

References:

  •  Tags:  
  • Related