![](/img/trans.png)
[英]SyntaxError: Unexpected token < in JSON at position 0 in Google Sheets Apps Script Tutorial
[英]Apps Script - Google Sheets -- API Call -- trouble with token header syntax
不知道如何語法這個..
...
// --------------------------------------------------------------------------------------------------
//
// 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,1,len,6).setValues(sortedOutput);
// formatting
sheet.getRange(15,1,500,6).setVerticalAlignment("middle");
sheet.getRange(15,5,500,1).setHorizontalAlignment("center");
sheet.getRange(15,2,len,3).setWrap(true);
}
...
這部分代碼不起作用:
--header '內容類型:應用程序/json'
--header '授權:承載 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 藝術家。 但我需要一個數字;)
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
文檔。
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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.