Данные JSON для Google

6797023 спросил: 28 апреля 2018 в 08:54 в: javascript

У меня есть ссылка JSON, которая дает мне такие данные, как

"data": [{
    "name": "123Seguro",
    "domain": "123seguro.com",
    "id": 1,
    "slug": "123seguro"
  }, {
    "name": "Earn.com",
    "domain": "21.co",
    "id": 2,
    "slug": "earn-com"
  }, {
    "name": "2C2P",
    "domain": "2c2p.com",
    "id": 3,
    "slug": "2c2p"
  }, {
    "name": "4thWay",
    "domain": "4thway.co.uk",
    "id": 5,
    "slug": "4thway"
  }, {
    "name": "51credit.com",
    "domain": "51credit.com",
    "id": 6,
    "slug": "51-credit-card-manager"
  }, ........................................

Есть ли способ передать эти данные в лист Google в 4 столбцах, поскольку он дает 4 столбца data?

Я пробовал с таким скриптом:

function fetch() {  var response = UrlFetchApp.fetch('mylink.json');
  var res1 = response.getContentText();
  var json = JSON.parse(res1);
  var name = json["name"];
  Logger.log(name);}

Но он не читает данные и регистратор, возвращающий "НЕ УКАЗАН". Может ли кто-нибудь помочь здесь, пожалуйста. Edit-1 В небольшом исследовании я нашел такой скрипт -

function IMPORTJSON(url,xpath){  try{
    // /rates/EUR
    var res = UrlFetchApp.fetch(url);
    var content = res.getContentText();
    var json = JSON.parse(content);    var patharray = xpath.split("/");
    //Logger.log(patharray);    for(var i=0;i<patharray.length;i++){
      json = json[patharray[i]];
    }    //Logger.log(typeof(json));    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";  
  }}

Здесь я применяю формулу как это - = IMPORTJSON ("https://theAPILINK.json","data") И ответ подобен 01234 ......... И на данный момент я перехожу от "данных" к "имени", это показывая "Node Not Available".

Любые предложения, пожалуйста. :) Р>


1 ответ

Casper ответил: 28 апреля 2018 в 01:07

Прежде всего, важно понять структуру данных JSON:

Data
-> 0
-> -> Name: 123Seguro
-> -> Domain: 123seguro.com
-> -> id: 1
-> -> slug: 123seguro
-> 1
-> -> Name: Earn.com
-> -> Domain: 21.co
-> -> id: 2
-> -> slug: earn-com
-> 2
....

Итак, чтобы достичь ваших данных, вам всегда нужно сначала открыть data а затем выберите конкретную "строку".

function fetch() {  var response = UrlFetchApp.fetch('mylink.json');
  var res1 = response.getContentText();
  var json = JSON.parse(res1);
  var name = json["name"];
  Logger.log(name);}

Но он не читает данные и регистратор, возвращающий "НЕ УКАЗАН". может кто-то помочь здесь, пожалуйста.

Это связано с тем, что вам сначала нужно открыть data, как описано выше. Затем определите элемент, из которого вы хотите узнать имя. Попробуйте что-то вроде Logger.log(json["data"][0]["name"]). Это должно вернуть имя первого элемента в вашем ответе JSON.

Здесь я применяю формулу следующим образом: =IMPORTJSON("https://theAPILINK.json","data") И ответ подобен 0 1 2 3 4 , , ....... И на данный момент я меняю "данные" на "имя", он показывает "Node Not Available".

Итак, вы сообщаете функции, где искать ваши данные и корневой узел (data). Когда вы меняете data на name, он не может найти элемент, названный так. Поэтому он вернет указанную вами ошибку.

Я бы рекомендовал погрузиться в ваш первый пример выборки вместо использования другой функции. Это поможет вам понять механизм и обработать данные по мере необходимости.

6797023 ответил: 30 апреля 2018 в 09:41
Спасибо, Каспер, Теперь я могу взять эти данные на свой лист. :)