You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 10:26:00