我具有以下功能,当提交Google表单时会调用该功能。我正在尝试将所有答案串联到一个数组中,以后再使用:
function onFormSubmit(e) {
var respostas = e.namedValues;
for(item in respostas){
rp = rp.concat(respostas[item]);
}
}
但是我想删除答案附带的时间戳。我可以使用respostas['Timestamp']
访问它,但是找不到删除或忽略它的方法。 documentation并没有太大帮助。
答案 0 :(得分:3)
var cp = [];
function onSubmitForm(e) {
var respostas = e.namedValues;
for (var name in respostas) {
if (respostas.hasOwnProperty(name) {
if (name !== 'Timestamp') {
cp.push(respostash[name]);
}
}
}
}
这就是我的建议。使用concat添加项目实在是太过分了,您只需将其推送即可。当您遍历对象属性以确保它们是该对象的自身属性,而不是从原型继承时,也是一种好习惯。您可以详细了解here
答案 1 :(得分:1)
在将属性与其余属性连接之前,可以检查属性的名称。
如果键item
等于Timestamp
(不需要的属性),则跳过当前循环。
for(item in respostas) {
if (item === 'Timestamp') {
continue;
}
rp = rp.concat(respostas[item]);
}
编辑:基于注释,OP证明for..in循环中的item
是整数,但是,除非他/她的代码与docs根本不同,否则变量应包含字符串,而不是数字。
var respostas = {
'First Name': ['Jane'],
'Timestamp': ['6/7/2015 20:54:13'],
'Last Name': ['Doe']
};
for(item in respostas) {
console.log(item);
}
答案 2 :(得分:0)
e.namedValues返回带有自定义键的JSON对象。
var jsonObj = e.namesValues;
/* e.namedValues returns data like this...
{
"test1": "testval1",
"test2": "testval2",
"test3": "testval3",
}
*/
for(item in respostas){
Logger.log(item); //Key
Logger.log(respostas[item]); //Value
}
这应该使您可以访问respostas
中项目的键或值。
可接受的答案会更好,因为它可以帮助用户解决确切的问题,但是,如果将来的用户希望了解如何访问Google Apps脚本对象中的变量,我将在此处留给以后的用户参考。返回。