Данные в формате JSON на лист Google - PullRequest
0 голосов
/ 22 мая 2018

У меня есть ссылка 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 столбца?

Я пытался с помощью сценария, подобного этому -

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") Иответ выглядит как 0 1 2 3 4. ....... И в данный момент я меняю с «data» на «name», он показывает «Node Not Available».

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

1 Ответ

0 голосов
/ 22 мая 2018

Прежде всего, важно понять структуру данных 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.,....... А в данный момент я меняю с «data» на «name», он показывает «Node Not Available».

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...