Как выгрузить данные из JSON в Гугл Таблицу

374
11 октября 2017, 09:55

Имеется информация в JSON формате получаемая с https://bittrex.com/api/v1.1/public/getmarketsummaries. Необходимо с помощью скрипта загрузить и упорядочить в гугл таблицу.

function processXMRAPI()  
{ 
 
  var ss = SpreadsheetApp.openById('1v2NmYXtURFR3cnrhmuzrcFX48YQTLGRO8Nq4dkL4l1w');   
   
  var APIPullSheet = ss.getSheetByName ("APIPull"); 
  APIPullSheet.getRange('A1:M300').clearContent(); 
 
  var url = "https://bittrex.com/api/v1.1/public/getmarketsummaries"; 
  var responseAPI = UrlFetchApp.fetch(url); 
  var parcedData = JSON.parse(responseAPI.getContentText()); 
   
  var results = [[]]; 
  
  for(var i in parcedData.result) 
    { 
      results[0].push(parcedData.result[i]); 
    } 
   
  resultRange = APIPullSheet.getRange(1, 1, results.length, 13); 
  resultRange.setValues(results); 
}

Вот как выглядит при этом массив https://imgur.com/s1mlLHD

Обращаем внимание на то, что в JSON имеется 259 объектов и в каждом из них по 13 данных которые и надо расставить по ячейкам. При выше указанном коде вылазит ошибка Неправильная ширина диапазона: указано 259, должно быть 13 (строка 20, файл Код) 20 это последняя строка кода.

Если не долго думая поменяем в 19 строке 13 на 259 resultRange = APIPullSheet.getRange(1, 1, results.length, 13); то выгрузка происходит, не так как надо. Вид на следующей картинке https://imgur.com/rAPFKOv

Видимо я не правильно разбираю массив, подскажите как это сделать, что бы данные заполнялись в 259 строк и 13 столбцов?

Answer 1
function processXMRAPI() 
{
 var ss = SpreadsheetApp.openById('1v2NmYXtURFR3cnrhmuzrcFX48YQTLGRO8Nq4dkL4l1w');  

  var APIPullSheet = ss.getSheetByName ("APIPull");
  APIPullSheet.getRange ('A1:M300').clearContent();
  var url = "https://bittrex.com/api/v1.1/public/getmarketsummaries";
  var responseAPI = UrlFetchApp.fetch(url);
  var parcedData = JSON.parse(responseAPI.getContentText());
  var results = new Array ();
  for(var i in parcedData.result)
    {
      var temp = [];
      for(var j in parcedData.result[i])
      {
        temp.push(parcedData.result[i][j]);
      }
      results.push(temp);
    }
  resultRange = APIPullSheet.getRange(1, 1,results.length,13);
  resultRange.setValues(results);
}
Answer 2

Вопрос решен. В коде моего скрипта был применен метод работы с одномерным массивом

var results = [[]]; 
for(var i in parcedData.result) 
{ 
  results[0].push(parcedData.result[i]); 
}

, а получаемая информация JSON представлена в виде многомерного массива и работать с ним нужно было, как показано в коде ниже:

var results = new Array (); 
  for(var i in parcedData.result) 
    { 
      var temp = []; 
      for(var j in parcedData.result[i]) 
      { 
        temp.push(parcedData.result[i][j]); 
      } 
      results.push(temp); 
    }

READ ALSO
Множество Starbox на одной странице

Множество Starbox на одной странице

Всем доброго времениХочу сделать рейтинг звездочками

358
Конвертирование даты в javascript

Конвертирование даты в javascript

Есть дата в формате: Tue, 10 Oct 2017 00:00:00 GMTНужно средставми js конвертировать её в формат Tue, 10 Oct 2017, и в формат 2017-10-10(YYYY-MM-DD), как это можно сделать?

311
Установка polymer для fedora Linux

Установка polymer для fedora Linux

Подскажите подробную установку библиотеки polymer для fedora Linux?

196
странный путь ngRoute

странный путь ngRoute

Написал простенький роутинг на ангуляре, но путь имеет странный вид, например: http://1270

196