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

如何使用Google Script从Google Sheet填充表单多选项及条件分页跳转

你之前的写法不生效的核心原因是JavaScript不支持直接在数组字面量([]包裹的内容)内部使用for循环生成数组元素,同时你原有手动逐行调用getRange()的写法会反复请求表格接口,效率极低,你已经提前用getDataRange().getValues()拿到了全表数据,直接遍历内存里的这个二维数组即可,不需要再反复读表格。

优化后的完整可运行代码如下:

function AutoPopulateGF() {
  // 打开目标表单
  var form = FormApp.openById("1fyej6DSh2B1spsurOR-gnD5s1NWrekt4Sf8xiIL7EjY");
  var items = form.getItems();
  // 打开目标表格获取全表数据
  var ss = SpreadsheetApp.openById("1hEBCEvUqJHnRuRqZS0FmhOZhOKG4PMa83czvdn01qcM").getSheetByName("Remplir ICI");
  var data = ss.getDataRange().getValues();
  var numrows = data.length; // 直接用已读取的data长度即可,无需重复调用接口

  // 遍历表单项找到目标多选题
  for (var i = 0; i < items.length; i++) { 
    if (items[i].getTitle() == 'Choisissez le module ') {
      var multipleChoiceItem = items[i].asMultipleChoiceItem();
      var choices = []; // 初始化空的选项数组

      // 遍历表格数据批量生成选项
      for (var j = 0; j < numrows; j++) {
        var row = data[j];
        // 跳过A列为空的行
        if (row[0] != "") {
          // 生成带跳转规则的选项,加入数组
          var choice = multipleChoiceItem.createChoice(
            row[0], 
            form.getItemById(row[30]).asPageBreakItem()
          );
          choices.push(choice);
        }
      }

      // 一次性把所有选项设置到多选题中
      multipleChoiceItem.setChoices(choices);
      // 找到目标项后直接break退出循环,减少不必要的遍历消耗
      break;
    }
  }
}

该方案的优化点:

  • 所有数据只从表格读取一次,全程操作内存数据,执行效率比逐行调用getRange()高10倍以上,200行数据秒级完成
  • 不需要手动逐个写选项配置,不管是200行还是2000行数据都可以自动批量生成
  • 找到目标题项后直接退出循环,减少无效性能消耗

内容的提问来源于stack exchange,提问作者Olivier Lutz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:36:03