编辑:使用Google Apps脚本,这些对象是从其函数传回的对象。当我说“已记录”时,我的意思是返回函数的结果已记录在GAS中。
我有一些对象可以用作较大脚本的配置文件,而我正尝试以编程方式生成较大的配置文件。
调用并登录时:
[ { name: "a1",
functionName:"functionA",
options:{something:"a1run"}
},
{ name: "a2",
functionName:"functionA",
options:{something:"a2run"}
},
{ name: "a3",
functionName:"functionA",
options:{something:"a3run"}
}
]
在日志中显示为:
[{
functionName = functionA,
name = a1,
options = {
something = a1run
}
},
}, {
functionName = functionA,
name = a2,
options = {
something = a2run
}
}, {
functionName = functionA,
name = a3,
options = {
something = a3run
}
}]
您会注意到所有引号都消失了。
但是,当我调用几乎相同的函数时,我使用for循环(此)生成了对象的每个部分
var s1 = "";
for (var i=0; i<5;i++)
{
var newString = '';
newString += '{ name: "a'+i+'",';
newString += 'functionName: "functionA",';
newString += 'options:{something: "a'+i+'run"} },';
s1+= newString;
}//for loop
该函数的记录结果是:
[{
name: "a0",
functionName: "functionA",
options: {
something: "a0run"
}
}, {
name: "a1",
functionName: "functionA",
options: {
something: "a1run"
}
}, {
name: "a2",
functionName: "functionA",
options: {
something: "a2run"
}
}, {
name: "a3",
functionName: "functionA",
options: {
something: "a3run"
}
}, {
name: "a4",
functionName: "functionA",
options: {
something: "a4run"
}
}, ]
这是一个问题,因为初始格式可以用作配置文件,而第二种格式则不能。我需要了解JavaScript对象的哪些方面?我认为这不会有所作为,因为使用该对象时会通过JSON.stringify
,但是我错了。
我的问题不仅仅是我如何对其进行更改以便以相同的方式进行处理,而是为什么一个人与另一个人的待遇不同。
答案 0 :(得分:2)
这不是创建JSON数组的正确方法
您应该执行类似的操作,而忘记创建一个JSON数组字符串
let output = [];
for (var i = 0; i < 5; i++) {
output.push({
name: "a" + i,
functionName: "functionA",
options: {
something: "a" + i + "run"
}
});
}
console.log(output);
答案 1 :(得分:1)
如果您能够使用Stackdriver或使用HTML Service将JSON对象打印到Web浏览器,则可以使用Logger或Google Apps Script内置ID调试器“打印” JSON进行调试,而不是使用它控制台。
上面已经说过,就像您已经发现的“日志”视图(“视图”>“日志”)一样,并非总是正确地打印JSON对象。
如果要使用Logger,首先应将JSON对象转换为字符串。在大多数情况下,使用JSON.stringify(...)可以正常工作。
参考