首页 > 解决方案 > 在 Google 表格中读取 JSON 数据

问题描述

我正在尝试将 IEXAPI 中的 JSON 数据导入 Google 表格,并在此处找到以下功能:

function IMPORTJSON(url,xpath){

  try{
    var res = UrlFetchApp.fetch(url);
    var content = res.getContentText();
    var json = JSON.parse(content);

    var patharray = xpath.split("/");

    for(var i=0;i<patharray.length;i++){
      json = json[patharray[i]];
    }

    if(typeof(json) === "undefined"){
      return "Node Not Available";
    } else if(typeof(json) === "object"){
      var tempArr = [];

      for(var obj in json){
        tempArr.push([obj,json[obj]]);
      }
      return tempArr;
    } else if(typeof(json) !== "object") {
      return json;
    }
  }
  catch(err){
      return "Error getting data";  
  }

}

我试图阅读的 JSON 是:

    [{
    "symbol":"AAPL",
    "sector":"electronictechnology",
    "securityType":"cs",
    "bidPrice":0,
    "bidSize":0,
    "askPrice":0,
    "askSize":0,
    "lastUpdated":1587067200000,
    "lastSalePrice":286.48,
    "lastSaleSize":100,
    "lastSaleTime":1587067199848,
    "volume":357754
}]

但是当我在 Google 表格中调用该函数时,我得到了错误Node Not Available

=IMPORTJSON("https://cloud.iexapis.com/stable/tops?token=MY_API_KEY&symbols=aapl", "symbol")

我不明白出了什么问题,因为symbol是 JSON 中的根节点。有人可以解释一下吗?

标签: javascriptjsongoogle-sheets

解决方案


您的对象被包装在一个数组中。

json = json[0][patharray[i]];

推荐阅读