multidimensional-array - 有没有办法将表单中的所有字段收集到二维数组中以写入 Google 表格?
问题描述
目标:我希望使用 Google App Scripts 创建一个自定义表单,以将具有不同行数的数据提交到 Google Sheet。本质上,将有一些基本字段,但随后有一个表结构,用户将能够按下按钮将另一行添加到表的末尾。一旦他们提交表格,结果将被附加到 Google 表格中。
到目前为止,我已经创建了表单,它允许您再添加 2 个包含字段的 div。我不想手动将每个字段映射到一个数组中以将其发送给 Google,所以我正在寻找最干净的方法。我试图一次提取所有表单字段,并考虑按类提取它们。我有它,二维数组将写入表格,但我在获取数据时遇到问题。
'''html
<form id="soulTestForm">
<div class="block">
<div>
<label for="name1">Name</label>
<input type="text" name="name1" id="name1" placeholder="A Fancy Name">
</div>
<div>
<label for="count1">Count</label>
<input type="number" name="count1" id="count1" placeholder="100">
</div>
</div>
<div class="block">
<div>
<label for="name2">Name</label>
<input type="text" name="name2" id="name2" placeholder="A Fancy Name">
</div>
<div>
<label for="count2">Count</label>
<input type="number" name="count2" id="count2" placeholder="100">
</div>
</div>
<button type="button" name="addSection" id="addSection" value="Add an Entry" onclick="addBlock();" >Add a Section</button>
<input type="submit" onclick="this.value='Magic ...'; google.script.run.withSuccessHandler(formSubmitted) .writeForm(this.parentNode); return false;">
</form>
<script>
function addBlock() {
var block = document.getElementsByClassName('soulBlocks');
var i;
for (i = 0; i < block.length; i++){
console.log("i=" + i);
if (block[i].style.display=="none"){
console.log("block if");
block[i].style.display="block";
if (i == block.length-1) {
document.getElementById("addSection").style.visibility="hidden";
}
break;
}
}
}
</script>
'''Code.gs file
function writeForm(form) {
var fields = [
[form.name1, form.count1],
[form.name2, form.count2]
];
}
解决方案
流动:
form
使用数组获取对象的所有键Object.keys
- 使用将键数组分成两组
Array.reduce
片段:
function writeForm(form) {
var tempArr,val;
var arr2d = Object.keys(form).reduce(function(acc,curr,i){
val = form[curr];
i % 2 === 0 ? (tempArr= [val]) : (tempArr.push(val), acc.push(tempArr));
return acc;
},[]);
return arr2d;
}
console.log(writeForm({"name1":"Cat","count1":"100","name2":"Mouse","count2":"99"}))
推荐阅读
- python - 使用 Python 在目录中找不到以 .sha1 结尾的文件
- mysql - 基于 Liunx 的 Azure PHP 应用服务缺少 MYSQL 驱动程序
- c++ - 如何根据模板参数包是否与函数参数匹配来控制模板函数定义?
- spring - 如何在JSP中显示第一列中的奇数数据和第二列中的偶数数据?
- google-chrome-devtools - 使用 webpack-dev-server 时,为什么 Chrome 会在每个第二个请求之前等待?
- linux - 在 zsh 中混合进程替换和管道
- android - 在前台发送通知时应用程序崩溃
- c# - Xamarin Forms:调试器无需等待即可离开异步方法
- python - 以读取模式打开文件不允许我删除文件
- forms - 多选组合框的移动替代品?