Как записать данные JSON на листе Google, используя JavaScript - PullRequest
2 голосов
/ 28 сентября 2019

Я пытаюсь отобразить данные json на листе Google, используя javascript.

Я пробовал искать среди множества документов и пытался часами.Я получаю одну строку данных на моем листе, но мне нужно отобразить весь набор данных json в правильных строках и столбцах

function renderJSON() {
  /* This function collects JSON data from a specified endpoint
  and renders the data to a spreadsheet */

  // Fetch JSON data from the endpoint
  var url = 'http://dummy.restapiexample.com/api/v1/employees';
  var response = UrlFetchApp.fetch(url);     // Get the JSON data
  var object = JSON.parse(response.getContentText());
  //Logger.log(response);

  // Define an array of all object keys
  var rows = []; // Declare an empty array
  rows.push(object);
  var headerRow = Object.keys(rows);

  // Define an array of all object values
  var rows = headerRow.map(function(key){return rows [key]});

  // Define the contents of the range
  var contents = [
    headerRow,
    rows
    ];

  // Select the range and set its values
  var ss = SpreadsheetApp.getActive();
  var rng = ss.getActiveSheet().getRange(1, 1, contents.length, 
  headerRow.length)
  var i;
  for (i = contents[0]; i < contents.length; i++) {
    rng.setValues([i]);
  }
}

Я ожидаю, что все данные json будут в идеальном формате дляGoogle лист с правильным заголовком и все выровнены в правильных столбцах.В настоящее время нет вывода на лист.

1 Ответ

1 голос
/ 28 сентября 2019

Как насчет этой модификации?В этой модификации сначала значения заголовка извлекаются из 1-го элемента.И значения извлекаются из заголовков.Затем значения, которые добавили заголовки, помещаются на активный лист.

Модифицированный скрипт:

function renderJSON() {
  var url = 'http://dummy.restapiexample.com/api/v1/employees';
  var response = UrlFetchApp.fetch(url);
  var object = JSON.parse(response.getContentText());

  var headers = Object.keys(object[0]);
  var values = object.map(function(e) {return headers.map(function(f) {return e[f]})});
  values.unshift(headers);
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}

Если я неправильно понял ваш вопрос, и это был не тот результат, который вам нужен, я прошу прощения.

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