Как обрезать вывод скриптов Google Apps - PullRequest
1 голос
/ 20 июня 2020

Я «разрабатываю» мобильное приложение на Flutter, которое должно получать json через httpService для анализа. Я недостаточно знаю о том, как Flutter анализирует файлы json, чтобы перенастроить методы и / или функции моего приложения, позволяя ему использовать то, что в настоящее время выводит мой скрипт приложения Google; и я недостаточно знаю о скриптах приложений Google, чтобы модифицировать этот код, чтобы он предоставлял приложению Flutter требуемый формат. Но похоже, что одно из них решит мою проблему.

В частности, мое приложение Flutter ожидает json, которое выглядит следующим образом:

[
{   "userId":"My Category Kittens","id":"Black","title":"Solid","body":"10"},
{   "userId":"My Category Kittens","id":"White","title":"Striped","body":"20"},
{   "userId":"My Category Kittens","id":"Gray","title":"Spotted","body":"30"},
{   "userId":"My Category Puppies","id":"Brown","title":"Shaggy","body":"40"},
{   "userId":"My Category Puppies","id":"Blue","title":"Scruffy","body":"50"},
{   "userId":"My Category Puppies","id":"Orange","title":"Mangey","body":"60"},
{   "userId":"My Category Puppies","id":"Pink","title":"Fluffy","body":"70"},
{   "userId":"My Category Birdies","id":"Green","title":"Slick","body":"80"},
{   "userId":"My Category Birdies","id":"Yellow","title":"Pixeled","body":"90"},
{   "userId":"My Category Birdies","id":"Purple","title":"Plaid","body":"100"},
{   "userId":"My Category Birdies","id":"Transparent","title":"Argiled","body":"110"},
{   "userId":"My Category Birdies","id":"Utraviolet","title":"Bald","body":"120"}
]

Но мой скрипт Google Apps выдает это:

{"user":[
{   "userId":"My Category Kittens","id":"Black","title":"Solid","body":"10"},
{   "userId":"My Category Kittens","id":"White","title":"Striped","body":"20"},
{   "userId":"My Category Kittens","id":"Gray","title":"Spotted","body":"30"},
{   "userId":"My Category Puppies","id":"Brown","title":"Shaggy","body":"40"},
{   "userId":"My Category Puppies","id":"Blue","title":"Scruffy","body":"50"},
{   "userId":"My Category Puppies","id":"Orange","title":"Mangey","body":"60"},
{   "userId":"My Category Puppies","id":"Pink","title":"Fluffy","body":"70"},
{   "userId":"My Category Birdies","id":"Green","title":"Slick","body":"80"},
{   "userId":"My Category Birdies","id":"Yellow","title":"Pixeled","body":"90"},
{   "userId":"My Category Birdies","id":"Purple","title":"Plaid","body":"100"},
{   "userId":"My Category Birdies","id":"Transparent","title":"Argiled","body":"110"},
{   "userId":"My Category Birdies","id":"Utraviolet","title":"Bald","body":"120"}
]}

Итак, любой предложения по редактированию моего скрипта Google Apps, чтобы исключить начальный '{"user":' и конечный '}'?

Вот мой код скрипта Google App:

function doGet(e){

 // Spread Sheet url
 var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1jsBS-RBNRxYU66WFkJHvrzHLGmNqxBzzQfaHJO6i6UY/edit#gid=446843772");

// Sheet Name
 var sheet = ss.getSheetByName("Users");

 return getUsers(sheet); 

}


function getUsers(sheet){
  var jo = {};
  var dataArray = [];

// collecting data from 2nd Row , 1st column to last row and last column
  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['userId'] = dataRow[0];
    record['id'] = dataRow[1];
    record['title'] = dataRow[2];
    record['body'] = dataRow[3];

    dataArray.push(record);

  }  

  jo.user = dataArray;

  var result = JSON.stringify(jo);

  return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);

}

Любой помощь очень ценится! Спасибо

1 Ответ

1 голос
/ 20 июня 2020

Когда я увидел ваш скрипт, dataArray помещается в свойство user с помощью jo.user = dataArray;. Таким образом, result равно {"user":[]dataArray}.

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

От:

jo.user = dataArray;

Кому:

jo = dataArray;

Таким образом, result означает только dataArray.

Примечание:

  • Похоже, вы используете веб-приложения. Поэтому повторно разверните веб-приложения как новую версию после изменения сценария. Таким образом, последний сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны.
...