在 API 脚本中处理 href

问题描述 投票:0回答:1

我正在使用 Google Apps 脚本从 Spotify API 中提取。我几乎可以提取所有内容,但是当有 href 时我会感到震惊。例如 -

      "name": "Mindfulness Music for Meditation and Total Relaxation",
    },
    "artists": [
      {
        "href": "https://api.spotify.com/v1/artists/15nn82tXBkwGVFJWgmSMzi",
        "name": "Relaxing Guitar Group",
      }

我下面的代码将提取“用于冥想和完全放松的正念音乐”,但不会提取 href 之后的艺术家姓名……想法?

我的代码-

function artistName(playlist_id) {
  //searches spotify and returns artist ID
  var response = UrlFetchApp.fetch("https://api.spotify.com/v1/playlists/" + playlist_id + "/tracks", 
  { method: "GET",
    headers:{
      "contentType": "application/json",
      'Authorization': "Bearer REMOVE FOR SECURITY"
            },
  });
  json = response.getContentText();
  var data = JSON.parse(json);
  var listName = [];
  for(var i = 0, len = data.items.length; i < len; i++){
    listName.push(data.items[i].track.album.name); //will return the album name, but I want it to return the artist name after href
                 }
  return listName;
}
api google-apps-script spotify
1个回答
0
投票

基本上,问题是您如何访问对象值。

正确的顺序是

data.items[i].track.album.artists[0].name

修改后的完整脚本如下所示:

function artistName(playlist_id) {
  //searches spotify and returns artist ID
  var response = UrlFetchApp.fetch("https://api.spotify.com/v1/playlists/" + playlist_id + "/tracks", 
  { method: "GET",
    headers:{
      "contentType": "application/json",
      'Authorization': "Bearer REMOVE FOR SECURITY"
    },
  });
  json = response.getContentText();
  var data = JSON.parse(json);
  var listName = [];
  for(var i = 0, len = data.items.length; i < len; i++){
    listName.push(data.items[i].track.album.artists[0].name);//this will return the artist name after href
  }

  /* For multiple artists
  for(var i = 0, len = data.items.length; i < len; i++){
    var artists = data.items[i].track.album.artists;
    artists.forEach((artist) => {
      listName.push(artist.name);
    });
  }
  */
  return listName;
}

© www.soinside.com 2019 - 2024. All rights reserved.