我正在使用 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;
}
基本上,问题是您如何访问对象值。
正确的顺序是
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;
}