Верхний уровень JSON файлов, объект? массив? - PullRequest
0 голосов
/ 06 августа 2020

Я использую flutter / dart для извлечения JSON файлов из Google Sheet. Я использую два разных метода для получения одного и того же листа Google: один - с помощью сценария, а другой - из службы «Sheetlabs». Однако листы работают, а сценарии не работают. Верхний уровень из таблиц листов - это массив, а верхний уровень из сценариев - это объект.

Я просто копирую файл сценария с YouTube и понятия не имею о сценариях Google. Как я могу изменить код сценария, чтобы сделать верхний уровень и массив такими же, как файл Sheetlabs?

Структура листа Google относительно проста - 10 столбцов с 'stockcode', 'stockname' и т. Д. c как заголовок, который замораживается. Шесть данных по акциям в строках.

Ниже код скрипта.

function doGet(e){
  var ss = SpreadsheetApp.openByUrl("MY ORIGINAL GOOGLE SHEET'S URL ADDRESS");
  var sheet = ss.getSheetByName("sheet1");
  
  return getUsers(sheet);
  
}

function getUsers(sheet){
  var jo = {};
  var dataArray = [];
  var rows = sheet.getRange(2,1,sheet.getLastRow()-1, sheet.getLastColumn()).getValues();
  
  for(var i = 0, l= rows.length; i<l ; i++){
    var dataRow = rows[i];
    var record = {};
    record['stockname'] = dataRow[0];
    record['stockcode'] = dataRow[1];
    record['marketvalue'] = dataRow[2];
    record['amount'] = dataRow[3];
    record['currentprice'] = dataRow[4];
    record['averagecost'] = dataRow[5];
    record['profit'] = dataRow[6];
    record['profitpercent'] = dataRow[7];
    record['previousclosingprice'] = dataRow[8];
    record['todaysprofit'] = dataRow[9];
   
    dataArray.push(record);
  }
  
  jo.user = dataArray;
  
  var result = JSON.stringify(jo);
  
  return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);

}

JSON structure from scripting

JSON конструкция из листов

1 Ответ

1 голос
/ 06 августа 2020

Вы создаете json объектов в for l oop.

Вам нужно закомментировать var jo = {};

Следующее должно работать:

function doGet(e){
  var ss = SpreadsheetApp.openByUrl("MY ORIGINAL GOOGLE SHEET'S URL ADDRESS");
  var sheet = ss.getSheetByName("sheet1");
  
  return getUsers(sheet);
  
}

function getUsers(sheet){
  var dataArray = [];
  var rows = sheet.getRange(2,1,sheet.getLastRow()-1, sheet.getLastColumn()).getValues();
  
  for(var i = 0, l= rows.length; i<l ; i++){

    var dataRow = rows[i];
    var record = {};
    record['stockname'] = dataRow[0];
    record['stockcode'] = dataRow[1];
    record['marketvalue'] = dataRow[2];
    record['amount'] = dataRow[3];
    record['currentprice'] = dataRow[4];
    record['averagecost'] = dataRow[5];
    record['profit'] = dataRow[6];
    record['profitpercent'] = dataRow[7];
    record['previousclosingprice'] = dataRow[8];
    record['todaysprofit'] = dataRow[9];
   
    dataArray.push(record);
  }
    
  var result = JSON.stringify(dataArray);
  
  return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...