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

通过Apps Script用多Sheets标签A列数据填充Google Form及报错修复

故障根因
  • getQuestionValues() 无有效返回值:forEach 回调内的return只会终止当前轮次的循环,不会给外层函数返回结果,导致googleSheetsQuestions实际为undefined,访问[0]索引时直接触发TypeError。
  • 原逻辑调用getDataRange()拉取工作表全量数据,不符合「仅提取两个Sheet A列数值填充2个问题」的需求,也没有做Sheet和表单问题的对应映射。
修复方案
  • 重构getQuestionValues()逻辑,显式收集两个Sheet的A列数据,按「问题标题-选项列表」的结构返回结果。
  • 调整表单填充逻辑,直接匹配问题标题和对应数据源,减少无效遍历。
  • 增加空值过滤逻辑,避免空单元格被加入选项列表。
修复后完整代码
function openForm(e) {
  populateQuestions();
}

function populateQuestions() {
  var form = FormApp.getActiveForm();
  var questionConfig = getQuestionValues();
  var itemsArray = form.getItems();
  
  itemsArray.forEach(function(item) {
    var itemTitle = item.getTitle();
    // 仅处理匹配到数据源的问题
    if (questionConfig.hasOwnProperty(itemTitle)) {
      // 过滤空值
      var choiceArray = questionConfig[itemTitle].filter(function(val) {
        return val !== '' && val != null;
      });
      // 若题目不是复选框,替换asCheckboxItem为对应题型方法即可
      // 单选题用asMultipleChoiceItem(),下拉题用asListItem()
      item.asCheckboxItem().setChoiceValues(choiceArray);
    }
  });
}

function getQuestionValues() {
  // 替换为你实际的Google表格ID
  var ss = SpreadsheetApp.openById('1234567890');
  // 配置映射关系:工作表名称 => 对应表单问题的完整标题
  var sheetQuestionMap = {
    "Sheet1": "替换为Sheet1对应的表单问题标题",
    "Sheet2": "替换为Sheet2对应的表单问题标题"
  };
  var result = {};

  Object.keys(sheetQuestionMap).forEach(function(sheetName) {
    var sheet = ss.getSheetByName(sheetName);
    if (!sheet) return;
    // 仅提取A列全量数据,不需要拉取其他列
    var aColumnValues = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues().flat();
    // A列第1行可作为备注,从第2行开始为实际选项
    var options = aColumnValues.slice(1);
    result[sheetQuestionMap[sheetName]] = options;
  });

  return result;
}
使用注意事项
  • 运行前替换代码中三处占位内容:实际的Google表格ID、两个Sheet分别对应的表单问题完整标题。
  • 若表单问题不是复选框类型,将asCheckboxItem()替换为对应题型的方法即可。
  • 确保脚本运行账号同时拥有目标Google表单和Google表格的编辑权限。

内容的提问来源于stack exchange,提问作者Brooke Taylor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:31:04