Javascript logger.log在基本调用API时返回未定义

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 =

我正在尝试获取一些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 = 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”)”