Google apps script 无法解析google apps脚本中的所有JSON值(尾随逗号)

Google apps script 无法解析google apps脚本中的所有JSON值(尾随逗号),google-apps-script,Google Apps Script,我请求一个API,我得到的json是 { "items":[ { "id":"231321", "externalId":32131", "status":"published", "network":"facebook", "message":"message", "externalChannels":[ "231312" ],

我请求一个API,我得到的json是

{
   "items":[
      {
         "id":"231321",
         "externalId":32131",
         "status":"published",
         "network":"facebook",
         "message":"message",
         "externalChannels":[
            "231312"
         ],
         "pictures":[
            picture"
         ],
         "type":"picture",
         "facebook":{
            "dark":false
         },
         "labels":[
            "bus",
            "train",
            "car"
         ],
当我试图解析标签部分时,虽然我只得到第一个值,而没有得到另一个值。我在谷歌上搜索了一下,发现它后面有逗号,但我找不到任何解决方案。有什么想法吗

编辑:使用下面的脚本,我可以在记录器上看到标签的所有值,但只有第一个值写在电子表格上

function getdata() {
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('api');
  var range = sheet.getRange("A:C");
  var response = UrlFetchApp.fetch("api call");
  var dataAll = JSON.parse(response.getContentText());
  var dataSet = dataAll.items;
  var rows = [],
    data;
  for (i = 0; i < dataSet.length; i++) {
    data = dataSet[i];

    rows.push([new Date(),data.labels]); //your JSON entities here
  }
  Logger.log(rows)
  //sheet.getRange(getlastRow() + 1, 1, rows.length, 2).setValues(rows);
  sheet.getRange(sheet.getLastRow() + 1, 1, rows.length, 2).setValues(rows);
函数getdata(){ var电子表格=SpreadsheetApp.getActiveSpreadsheet(); var sheet=spreadsheet.getSheetByName('api'); var范围=sheet.getRange(“A:C”); var response=UrlFetchApp.fetch(“api调用”); var dataAll=JSON.parse(response.getContentText()); var数据集=dataAll.items; 变量行=[], 数据; 对于(i=0;i问题不在于后面的逗号,而在于json的结构——在对象内部有一个对象
  • 如果您的json看起来像您的问题中描述的(我假设缺少括号和引号是键入错误),那么它不是字符串,而是一个不需要解析的有效字符串
  • 实际上,尝试使用非字符串将导致错误
  • 如果要访问JSON对象的各个元素,例如,可以将它们放入由键a和值分隔的数组中
  • 这可以很方便地用
样本:

function myFunction() {
  var myObject = {
    "items":[
      {
        "id":"231321",
        "externalId":"32131",
        "status":"published",
        "network":"facebook",
        "message":"message",
        "externalChannels":[
          "231312"
        ],
        "pictures":[
          "picture"
        ],
        "type":"picture",
        "facebook":{
          "dark":false
        },
        "labels":[
          "bus",
          "train",
          "car"
        ],
      }
    ]
  }
  var data = myObject.items;
  var array = [];
  for (var i = 0; i< data.length; i++){
    var newJson = Object.keys(data[i]).map(function (key) { 
      return [key, data[i][key]]; 
    }); 
    for(var j = 0; j< newJson.length; j++){
      array.push(newJson[j]);
    }
  }
  Logger.log(array);
  Logger.log(array[0][0] + " is " + array[0][1]);
}

函数myFunction(){
变量myObject={
“项目”:[
{
“id”:“231321”,
“外部化”:“32131”,
“状态”:“已发布”,
“网络”:“facebook”,
“消息”:“消息”,
“外部通道”:[
"231312"
],
“图片”:[
“图片”
],
“类型”:“图片”,
“facebook”:{
“黑暗”:假
},
“标签”:[
“巴士”,
“火车”,
“汽车”
],
}
]
}
var数据=myObject.items;
var数组=[];
对于(变量i=0;i
嘿,谢谢你的回复。我已经有了一个脚本,在记录器中我可以看到所有标签值,但电子表格上只写了一个。我会在原始帖子中附上我的脚本,以防你发现问题。非常感谢@ziganotschkaI刚刚查看了你的更新代码:与我的情况不同,我有两个嵌套的
循环,您只有一个。因此,您不会单独循环所有数组元素,结果是:`[[Tue May 26 10:06:07 GMT+02:00 2020,[bus,train,car]]``(一个3D数组,而
setValues()
需要一个2D数组)。如果要将数组元素转换为字符串,可以使用
join()
,因此:
rows.push([新建日期(),data.labels.join()];