问题描述
不确定如何对此标头不记名令牌部分语法化。.
...
// --------------------------------------------------------------------------------------------------
//
// iTunes Music discovery Application in Google Sheets
//
// --------------------------------------------------------------------------------------------------
// custom menu
function onopen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('iTunes API Call')
.addItem('Get Artist Data','displayArtistData')
.addToUi();
}
// function to call iTunes API
function calliTunesAPI(artist) {
// Call the iTunes API
var response = UrlFetchApp.fetch("https://api.music.apple.com/v1/catalog/us/music-videos/{" + artist + "}");
--header 'Content-Type:application/json' \
--header 'Authorization: Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVWNjY3SEZaNjMifQ.eyJpc3MiOiJTOTU0QVE5Q1Q3IieOwO'
// Parse the JSON reply
var json = response.getContentText();
return JSON.parse(json);
}
function displayArtistData() {
// pick up the search term from the Google Sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var artist = sheet.getRange(11,3).getValue();
var tracks = calliTunesAPI(artist);
var results = tracks["results"];
var output = []
results.forEach(function(elem,i) {
var image = '=image("' + elem["artworkUrl60"] + '",4,60,60)';
var hyperlink = '=hyperlink("' + elem["previewUrl"] + '","Listen to preview")';
output.push([elem["artistName"],elem["collectionName"],elem["trackName"],image,hyperlink]);
sheet.setRowHeight(i+15,65);
});
// sort by album
var sortedOutput = output.sort( function(a,b) {
var albumA = (a[1]) ? a[1] : 'Not kNown'; // in case album name undefined
var albumB = (b[1]) ? b[1] : 'Not kNown'; // in case album name undefined
if (albumA < albumB) { return -1; } else if (albumA > albumB) {
return 1;
}
// names are equal
return 0;
});
// adds an index number to the array
sortedOutput.forEach(function(elem,i) {
elem.unshift(i + 1);
});
var len = sortedOutput.length;
// clear any prevIoUs content
sheet.getRange(15,1,500,6).clearContent();
// paste in the values
sheet.getRange(15,len,6).setValues(sortedOutput);
// formatting
sheet.getRange(15,6).setVerticalAlignment("middle");
sheet.getRange(15,5,1).setHorizontalAlignment("center");
sheet.getRange(15,2,3).setWrap(true);
}
...
这部分代码不起作用:
-标头'Content-Type:application / json'
--header'授权:Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVWNjY3SEZaNjMifQ.eyJpc3MiOiJTOTU0QVE5Q1Q3IieOwO
不确定如何正确语法化。我确定这是101,但不确定答案。
解决方法
以此为例,您应该能够更新代码。祝你好运!
var url = "https://www.example.com"
var headers = {
"Authorization": "Bearer ijfewfkjsfkjh4543","Content-Type": "Application/json"
};
var options = {
"method" : "get","headers" : headers
};
var response = UrlFetchApp.fetch(url,options);
编辑:应该这样做,但是我看到API掉线了。您可以删除var artist。但是我需要一个数字;)
function calliTunesAPI(artist) {
var artist = 178834;
var url = "api.music.apple.com/v1/catalog/us/music-videos"+artist;
var headers = { "Authorization": "Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVWNjY3SEZaNjMifQ.eyJpc3MiOiJTOTU0QVE5Q1Q3IieOwO","Content-Type": "Application/json"
};
var options = {
"method": "get","headers": headers,"muteHttpExceptions": true
};
var response = UrlFetchApp.fetch(url,options).getContentText();
var json = JSON.parse(response);
console.log(json);
}
,
您可能想看一下UrlFetchApp
文档here。
UrlFetchApp
的作用是获取资源并通过Internet与其他主机通信。由于您要检索一些数据,因此在发出请求时,基本上必须包括bearer
和headers
。
考虑到所有这些因素,您可以将函数重写为此:
function calliTunesAPI(artist) {
var url = "https://api.music.apple.com/v1/catalog/us/music-videos/{" + artist + "}";
var params = {
"headers": {
"Content-Type": "application/json","Authorization": "Bearer eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjVWNjY3SEZaNjMifQ.eyJpc3MiOiJTOTU0QVE5Q1Q3IieOwO"
}
"method": "GET"
}
var response = UrlFetchApp(url,params);
var json = response.getContentText();
return JSON.parse(json);
}