Данные JSON неправильно проанализированы в Google Sheets - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь преобразовать данные Google Sheets в формат JSON, используя скрипт.

Это тестовый лист Google: https://docs.google.com/spreadsheets/d/1zEts1AaAseO4MlLf5OA--Ylp-bH9aXe-1pacjstv4GI/edit#gid=0

Но формат JSON выглядит следующим образом: JSON Format of the Test Sheet

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

function doGet(e) {

  var sheetName = "TestSheet";
  var sheetId   = "1zEts1AaAseO4MlLf5OA--Ylp-bH9aXe-1pacjstv4GI";

  var book = SpreadsheetApp.openById(sheetId);
  var sheet = book.getSheetByName(sheetName);

  var json = convertSheet2JsonText(sheet);

  return ContentService
      .createTextOutput(JSON.stringify(json))
      .setMimeType(ContentService.MimeType.JSON);
}

function convertSheet2JsonText(sheet) {

  var sheetName = "TestSheet";
  var sheetId   = "1zEts1AaAseO4MlLf5OA--Ylp-bH9aXe-1pacjstv4GI";

  var book = SpreadsheetApp.openById(sheetId);
  var sheet = book.getSheetByName(sheetName);
  var colStartIndex = 1;
  var rowNum = 1;
  var firstRange = sheet.getRange(2, 2, 2, sheet.getLastColumn());
  var firstRowValues = firstRange.getValues();
  var titleColumns = firstRowValues[0];

  // after the second line(data)
  var lastRow = sheet.getLastRow();
  var rowValues = [];
  for(var rowIndex=2; rowIndex<=lastRow; rowIndex++) {
    var colStartIndex = 1;
    var rowNum = 1;
    var range = sheet.getRange(rowIndex, colStartIndex, rowNum, 
  sheet.getLastColumn());
    var values = range.getValues();
    rowValues.push(values[0]);
}

// create json
  var jsonArray = [];
  for(var i=0; i<rowValues.length; i++) {
    var line = rowValues[i];
    var json = new Object();
    for(var j=0; j<titleColumns.length; j++) {
      json[titleColumns[j]] = line[j];
    }
   jsonArray.push(json);
  }
  return jsonArray;
 }

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

Правильный формат JSON этого контрольного листа должен выглядеть следующим образом: Right Format of JSON

1 Ответ

0 голосов
/ 29 сентября 2018

Вы хотите извлечь следующий объект из общей электронной таблицы, используя ваш скрипт.

[
  {
    "firstName": "john",
    "lastName": "doe",
    "age": 12,
    "place": "boston"
  },
  {
    "firstName": "nahid",
    "lastName": "patwary",
    "age": 21,
    "place": "sylhet"
  },
  {
    "firstName": "kishor",
    "lastName": "pasha",
    "age": 15,
    "place": "california"
  }
]

Если мое понимание верно, как насчет этой модификации?Я думаю, что причиной вашей проблемы может быть диапазон для получения titleColumns.Так как насчет изменения следующим образом?

С:

var firstRange = sheet.getRange(2, 2, 2, sheet.getLastColumn());

Кому:

var firstRange = sheet.getRange(1, 1, 1, sheet.getLastColumn());

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

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