如何将JSON响应转换为表格在表格软件中

3
我正在向一个API发送请求(在谷歌脚本中),并且我得到的响应是看起来像这样的JSON文本:
[{"id":26319355,"name":"1. WAW -FIRST SESION","calendar":"Glovers
Click&Collect","duration":30,"isSeries":false,"slots":90,"slotsAvailable"
:89,"color":"#E3DE7D","price":"0.00","category":"WAW","description":"",
"calendarID":2978881,"serviceGroupID":2978881,"appointmentTypeID":10104780,
"calendarTimezone":"Europe\/Madrid","time":"2019-06-01T12:00:00+0200",
"localeTime":"June 1, 2019 12:00"},

{"id":26466803,"name":"1. WAW -FIRST SESION","calendar":"Glovers
Click&Collect","duration":30,"isSeries":false,"slots":90,"slotsAvailable"
:89,"color":"#E3DE7D","price":"0.00","category":"WAW","description":"",
"calendarID":2978881,"serviceGroupID":2978881,"appointmentTypeID":10104780,
"calendarTimezone":"Europe\/Madrid","time":"2019-06-07T14:00:00+0200",
"localeTime":"June 7, 2019 14:00"},

我希望将这个响应作为表格粘贴到我的电子表格中。
实际上,我的脚本看起来像这样(其中response是我从API请求得到的响应):

function CheckAv(row,acuityid,check,url,apiusername,apisecretkey,ss) {
 
 var header = {
        "contentType": "application/json",
        "headers":{"Authorization" : " Basic " + Utilities.base64Encode(apiusername + ":" + apisecretkey)},
        "method" : "GET"
      }
   
  muteHttpExceptions: true 
  
  var response = UrlFetchApp.fetch(url, header);
  var data = JSON.parse(response.getContentText());
  var text = response.getResponseCode();
   
  Logger.log(text);
   
}

我认为这很容易,但我找不到解决方法。

你所说的“表格”,是指将文本的每个值放入单元格中,还是创建类似于数据透视表的东西? - Jescanellas
@Jescanellas 是的,将文本的每个值放在一个单元格中,并带上正确的标题。 - Màrius Montmany
1个回答

1
你可以使用以下代码循环遍历JSON结构并将每个键和值推送到指定行。
  json = [{your: "JSON", data: "goes"}, {in : "here"}]

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  var sheet = ss.getActiveSheet();

  var rows = [],
      data;

    for (i = 0; i < json.length; i++) {
        for (j in json[i]) {   

          dataq = json[i][j];

          Logger.log(dataq);

          rows.push([j, dataq]);
    }
      dataRange = sheet.getRange(1, 1, rows.length, 2);
      dataRange.setValues(rows);    
  }

嗨Rafa,感谢你的回答。 我猜我的JSON数据需要在之前的查询中作为“response”,对吗?我正在添加你给我的代码,但不幸的是,我没有得到粘贴的数据,什么也没有发生。 - Màrius Montmany
你是在使用 response 还是 JSON.parse(response.getContentText) 作为变量 json 的取值?如果你将 json 设置为你在原问题中发布的响应数据(最后一个,替换为]),它应该会将数据输出到绑定的电子表格的第一张表中。 - Rafa Guillermo
我刚刚使用了JSON.parse(response.getContentText),它起作用了!问题是现在我得到的标题在一列中,而值在下一列中,所以看起来像:名称 - 约翰 电子邮件 - john@gmail.com 名称 - 马克 电子邮件 - mark@gmail.com ....我需要的是将类别名称作为标题,并将信息填入每个标题。 - Màrius Montmany
你能否在原问题中添加电子表格布局的结构?目前还不太清楚你想要如何填充该表格。 - Rafa Guillermo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接