Google表单App Script填充的下拉选项提交后未同步至关联表格
问题排查与修复
核心问题原因
数组空位破坏选项映射
原脚本通过HouseAddressAddress[i] = namesValues[i][0]赋值时,源数据行有空值会导致数组对应索引位置留下undefined空位。Google表单的setChoiceValues要求传入纯非空字符串数组,包含undefined的选项会打乱表单与关联表格的内部映射,最终造成提交值无法同步。无效空行扩大问题范围
使用getMaxRows()获取行数会包含工作表所有行(包括无数据的空白行),让namesValues混入大量空数组,进一步增加数组出现空位的概率。
修复后的脚本
function FillDropDown(){ var form = FormApp.openById("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"); var HouseAddressList = form.getItemById("987145236").asListItem(); var ss = SpreadsheetApp.getActive(); var names = ss.getSheetByName("Form data"); // 获取实际有数据的最后一行,避免处理空行 var lastRow = names.getLastRow(); if(lastRow < 2) return; // 无数据时直接退出 var namesValues = names.getRange(2, 2, lastRow - 1).getValues(); var HouseAddressAddress = []; for(var i = 0; i < namesValues.length; i++){ var value = namesValues[i][0].trim(); if(value !== ""){ HouseAddressAddress.push(value); // 用push添加非空值,避免数组空位 } } HouseAddressList.setChoiceValues(HouseAddressAddress); }
额外验证步骤
- 运行修复脚本后,进入表单编辑页确认下拉选项无空白项;
- 检查关联表格对应列未被手动设置特殊数据验证或保护规则。
内容的提问来源于stack exchange,提问作者Alok
相关产品推荐
相关产品推荐

