Google apps script 无法解析google apps脚本中的所有JSON值(尾随逗号)
我请求一个API,我得到的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" ],
{
"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对象的各个元素,例如,可以将它们放入由键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()];