Чтение JSON данных в Google Sheets - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь импортировать JSON данные из IEXAPI в Google Sheets и обнаружил следующую функцию здесь :

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 Sheets, я получаю ошибку Node Not Available:

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

Я не понимаю, что не так, потому что symbol является корневым узлом в JSON. Может кто-нибудь объяснить, пожалуйста?

1 Ответ

1 голос
/ 17 апреля 2020

Ваш объект упакован в массив.

json = json[0][patharray[i]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...