如何让Google Form将单次提交的多库存条目拆分至表格单独行
解决Google Form单次多库存项入库的重复填写问题
方案1:利用Google Form内置的重复区块+条件分支(无需代码)
这是最适合非技术团队的轻量方案,核心让用户只填一次通用信息,重复填写库存项:
- 先创建通用前置区块:包含交付单号、供应商、收货日期等仅需提交一次的信息。
- 创建库存项区块:包含SKU、入库数量、批次号等单库存项所需字段。
- 在库存项区块末尾加选择题:"是否需要添加下一项库存?",选项设为「是」「否」。
- 设置条件分支:
- 选「是」则跳转回库存项区块开头(可在表单说明里提示单次最多5项,或通过分支设置限制循环次数)。
- 选「否」则跳转至表单提交页。
- 提交后原始响应会把重复库存项合并在同一行,可后续用表格「数据拆分」功能或简单公式提取拆分。
方案2:用Google Apps Script自动拆分响应到单独行(适合自动化需求)
如果需要直接将多库存项拆分成表格独立行,可在表单关联的Google表格中编写脚本自动处理:
- 在表单里设置5组库存项字段(比如「库存1 SKU」「库存1 数量」「库存2 SKU」「库存2 数量」…直到第5组)。
- 打开表单关联的Google表格,点击「扩展程序」→「Apps脚本」,粘贴以下示例代码:
function onFormSubmit(e) { const responseItems = e.response.getItemResponses(); // 提取通用信息(根据你的表单字段顺序调整索引) const deliveryNo = responseItems[0].getResponse(); const supplier = responseItems[1].getResponse(); const receiveDate = responseItems[2].getResponse(); // 定义5组库存项的字段索引(索引从0开始,根据实际表单调整) const inventoryGroups = [ {skuIdx: 3, qtyIdx: 4}, {skuIdx: 5, qtyIdx: 6}, {skuIdx: 7, qtyIdx: 8}, {skuIdx: 9, qtyIdx: 10}, {skuIdx: 11, qtyIdx: 12} ]; // 指定拆分后数据存储的工作表 const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("拆分后库存"); // 遍历每组库存项,有内容则新增行 inventoryGroups.forEach(group => { const sku = responseItems[group.skuIdx]?.getResponse(); const qty = responseItems[group.qtyIdx]?.getResponse(); if (sku && qty) { targetSheet.appendRow([deliveryNo, supplier, receiveDate, sku, qty]); } }); }
- 修改代码中的字段索引和目标工作表名称,匹配你的表单结构。
- 设置触发条件:在脚本编辑器中点击「触发器」→「添加触发器」,选择「事件源:从电子表格」,「事件类型:表单提交」,保存并完成授权。
- 后续表单提交后,脚本会自动将每组填写了的库存项拆分成单独行,存入指定工作表。
方案3:用网格题简化表单填写(配合脚本拆分)
如果希望表单界面更紧凑,可使用网格题承载多库存项:
- 创建网格题,列设置为「SKU」「数量」「批次号」,行设置为「库存项1」「库存项2」…「库存项5」。
- 通用信息仍放在网格题之前,提交后用类似方案2的脚本,遍历网格题的每一行响应,将有内容的行拆分成独立表格行。
内容的提问来源于stack exchange,提问作者Nicole Knight
相关产品推荐
相关产品推荐

