Google表格对话框多选下拉列表数据无法写入问题求助
Google表格对话框下拉选单数据无法写入的修复方案
问题概述
在Google表格的自定义对话框中添加了3个下拉选择项,但仅第一个下拉列表的数据能成功写入指定单元格,其余两个下拉选单的数据被忽略,无法正常写入。
错误原因
核心问题是GS代码中接收表单数据的字段名与HTML表单控件的name属性不匹配:
- HTML里三个下拉选单的
name分别是choice、choice2、choice3 - GS的
itemAdd函数里却试图读取form.manupub、form.details、form.quantity这些不存在的字段,自然无法获取到下拉选单的数据
另外HTML表单中定义了onsubmit="handleFormSubmit(this)"但未实现该函数,当前按钮直接调用google.script.run,该问题不影响核心逻辑,但可以统一优化。
修正后的代码
1. GS代码(Code.gs)
function openInputDialog() { var html = HtmlService.createHtmlOutputFromFile('Index3').setSandboxMode(HtmlService.SandboxMode.IFRAME); SpreadsheetApp.getUi() .showModalDialog(html, 'Заполни форму'); } function itemAdd(form) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets()[0]; // 修正字段名,与HTML表单控件的name一一对应 sheet.appendRow([" ", form.category, form.item, form.choice, form.choice2, form.choice3]); return true; }
2. HTML代码(Index3.html)
<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <form id="myForm"> <label>指定日期(格式:xx.xx.xxxx):</label> <input type="text" name="category"><br><br> <label>售票员昵称:</label> <input type="text" name="item"><br><br> <label>选择1:</label> <select name="choice"> <option value="Option1">Option1</option> <option value="Option2">Option2</option> </select><br><br> <label>选择2:</label> <select name="choice2"> <option value="Option 1">Option 1</option> <option value="Option 2">Option 2</option> </select><br><br> <label>选择3:</label> <select name="choice3"> <option value="Option 1">Option 1</option> <option value="Option 2">Option 2</option> </select><br><br> <input type="button" value="完成" onclick="google.script.run .withSuccessHandler(google.script.host.close) .itemAdd(document.getElementById('myForm'))" /> </form> </body> </html>
说明
- GS代码中
appendRow的字段顺序与HTML表单控件的name严格对应,确保能正确获取每个下拉选单的选中值 - HTML中移除了未实现的
onsubmit事件,按钮通过document.getElementById('myForm')直接获取完整表单对象传递给GS函数,避免this.parentNode可能带来的上下文歧义
内容的提问来源于stack exchange,提问作者Gertykio
相关产品推荐
相关产品推荐

