【问题标题】:How To Trim Google Apps Script Output如何修剪 Google Apps 脚本输出
【发布时间】:2020-06-20 08:40:49
【问题描述】:

我正在 Flutter 中“开发”一个移动应用程序,该应用程序必须通过 httpService 获取 json 进行解析。我对 Flutter 如何解析 json 文件、重新配置我的应用程序的方法和/或功能、允许它使用我的 Google App Script 当前输出的内容知之甚少;而且我对 Google App Scripts 的了解不够,无法修改该代码,以便它为 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 应用脚本代码:

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);

}

非常感谢任何帮助! 谢谢

【问题讨论】:

  • 在你的脚本中,dataArrayjo.user = dataArray; 放到了user 的属性中。在这种情况下,作为一个简单的修改,将jo.user = dataArray;修改为jo = dataArray;怎么样?这样,仅使用dataArray。顺便说一句,您似乎正在使用 Web 应用程序。因此,请在修改脚本时将 Web 应用程序重新部署为新版本。这样,最新的脚本就会反映到 Web 应用程序中。请注意这一点。
  • 哇,谢谢!这正是我想要的。杰出的!不幸的是,我现在才知道,这不是我需要的,哈哈。不过,这对我来说是一个巨大的进步。无论如何,我现在得到一个不同的错误:发生异常。 FormatException(FormatException:意外字符(在第 2 行,第 1 个字符) ^)。这可能是因为我的原始 json 请求使用了一个以 '.json' 结尾的 url,但这个 google app 脚本 url 不指示文件类型?
  • 感谢您的回复和测试。我很高兴你的问题得到了解决。问题解决后,您可以将其发布为答案吗?这样,它将帮助有同样问题的用户。
  • 是的。我将发布作为答案。那么我应该针对后续错误创建一个单独的问题吗?
  • 现在我注意到您的回复已更新。我为此道歉。从您更新的回复中,发现您最初的问题已得到解决。关于你的新问题,我不得不为我的拙劣技能道歉。不幸的是,从您的回复中我无法理解。我认为提供更多信息将有助于思考新问题。那么如何通过包含更多信息将您的新问题发布为新问题?这样,我认为这将有助于包括我在内的用户思考新问题。

标签: json flutter google-apps-script google-sheets


【解决方案1】:

当我看到你的脚本时,dataArrayjo.user = dataArray; 放到了user 的属性中。这样,result 就是{"user":[]dataArray}

作为解决问题的简单修改,请如下修改并测试。

发件人:

jo.user = dataArray;

收件人:

jo = dataArray;

由此,result 只是 dataArray

注意:

  • 您似乎正在使用 Web 应用程序。因此,请在修改脚本时将 Web 应用程序重新部署为新版本。这样,最新的脚本就会反映到 Web 应用程序中。请注意这一点。

【讨论】:

  • 谢谢!这是很大的帮助!现在,继续下一期,哈哈
  • @hereis ishow 感谢您的回复。关于您的新问题,我认为提供更多有关它的信息将有助于包括我在内的用户思考解决方案。
  • 没有问题。这是我后续问题的链接:stackoverflow.com/questions/62486506/…
  • @hereis ishow 感谢您的回复。我想检查一下。当我了解它并找到解决方案时,我想发布一个答案。
猜你喜欢
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-02
  • 2011-08-06
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多