Javascript logger.log在基本调用API时返回未定义
我正在尝试获取一些API数据,以便集成到google工作表中。我正在从这个URL获取。但是,当我运行该函数时,记录器返回undefined。我错过了什么?这是学习如何编码的第2天Javascript logger.log在基本调用API时返回未定义,javascript,json,Javascript,Json,我正在尝试获取一些API数据,以便集成到google工作表中。我正在从这个URL获取。但是,当我运行该函数时,记录器返回undefined。我错过了什么?这是学习如何编码的第2天 function myFunction() { var res = UrlFetchApp.fetch("https://api.coingecko.com/api/v3/coins/list"); var content = res.getContentText(); var json =
function myFunction() {
var res = UrlFetchApp.fetch("https://api.coingecko.com/api/v3/coins/list");
var content = res.getContentText();
var json = JSON.parse(content);
var list = json["id"]["symbol"];
Logger.log(list);
}
我认为它是未定义的,因为您没有等待响应(这是一个
ASYNC
ajax请求)。。因此,您必须使用承诺
/或/等待异步
等等来等待它
试着这样做:
async function myFunction() { //mark the func as async
var res = await UrlFetchApp.fetch("https://api.coingecko.com/api/v3/coins/list"); // await the response FROM the server
var content = res.getContentText();
var json = JSON.parse(content);
var list = json["id"]["symbol"];
Logger.log(list);
}
或者承诺:
function myFunction() { //mark the func as async
UrlFetchApp.fetch("https://api.coingecko.com/api/v3/coins/list").then((resp) => { //await for the response FROM the server
var res = resp;
var content = res.getContentText();
var json = JSON.parse(content);
var list = json["id"]["symbol"];
Logger.log(list);
}).catch()
}
我希望它能帮助你 因为对于字段“id”,“symbol”,您需要进入JSON的1级:
for(const el of JSON){console.log(el.id,el.symbol,el.name);}
因为内容变量将给您[{“id”:“01coin”,“symbol”:“zoc”,“name”:“01coin”},…],所以尝试使用var list=JSON[0][“symbol”]或var list=JSON[0].symbol,并且您不能使用JSON[“id”][“symbol”]因为id和symbol是ArrayTanks federico的同一成员,所以当我应用任一代码时,它返回“Missing;before语句。(第1行,文件“code”)”