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

如何用Google Apps Script提取表格多列值并生成表单选项

多列提取非重复值并更新Google表单复选框

修改思路

  1. 定义需要处理的多列范围数组,比如['G8:G', 'H8:H'],方便后续灵活添加或修改列
  2. 遍历每个列范围,逐列读取数据
  3. 对每一行的单元格值,过滤空值后检查是否已存在于结果列表,不存在则添加
  4. 保留原有的表单更新逻辑,用去重后的列表设置复选框选项

修改后的代码

var hojaActual = SpreadsheetApp.getActive();

function actualizarOpcionesFormulario() {
  // 定义需要处理的多列范围,可自行添加或修改列
  const columnas = ['G8:G', 'H8:H'];
  var elementos = [];

  columnas.forEach(columna => {
    // 获取当前列的所有数据
    const data = hojaActual.getRange(columna).getValues();
    // 遍历当前列的每一行
    data.forEach(row => {
      const valor = row[0];
      // 过滤空值,且值未在列表中时添加
      if (valor !== '' && elementos.indexOf(valor) === -1) {
        elementos.push(valor);
      }
    });
  });

  Logger.log('ELEMENTOS: ' + elementos);

  // 更新Google表单复选框选项
  const idForm = "1Gn7cXU9l5MtoAelMt4gLmdj6mK1A2kAhswo";
  const formulario = FormApp.openById(idForm);
  // 若需要替换现有选项,可先找到对应问题再更新,示例为新增一个复选框
  formulario.addCheckboxItem()
    .setTitle("Funciono a medias")
    .setChoiceValues(elementos);
}

关键说明

  • 多列处理:通过columnas数组批量管理要处理的列,新增列只需在数组中添加对应范围即可
  • 空值过滤:新增valor !== ''判断,避免将空单元格内容混入选项列表
  • 去重逻辑:保持原有的indexOf判断确保值唯一;若处理数据量较大,可改用Set提升效率,替换逻辑见下方

高效去重替代方案(大数据量推荐)

如果处理的列数据量较大,用Set去重性能更优,修改去重部分代码如下:

var elementos = new Set();

columnas.forEach(columna => {
  const data = hojaActual.getRange(columna).getValues();
  data.forEach(row => {
    const valor = row[0];
    if (valor !== '') {
      elementos.add(valor);
    }
  });
});

// 将Set转为数组,用于表单选项
elementos = Array.from(elementos);

内容的提问来源于stack exchange,提问作者Pablo Riquelme

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:05:19