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

Google表单Checkbox Grid未选中项无返回值问题求助

解决Google表单Checkbox Grid未选中项无返回值的问题

修改后的代码

function onFormSubmit(e) {
  // 获取表单响应
  var formResponse = e.response;
  var itemResponses = formResponse.getItemResponses();
  
  var emailBody = "New form response:\n\n";
  var e_address = "";

  itemResponses.forEach(function(itemResponse) {
    var title = itemResponse.getItem().getTitle();
    var response = itemResponse.getResponse();

    // 处理Checkbox Grid组件
    if (itemResponse.getItem().getType() === "CHECKBOX_GRID") {
      var gridItem = itemResponse.getItem().asCheckboxGridItem();
      var rows = gridItem.getRows();
      var columns = gridItem.getColumns();
      var rowResponses = response; // 每行的选中列,数组格式

      // 构建包含所有单元格状态的响应(未选中项用null填充)
      var fullCellResponses = [];
      rows.forEach(function(_, rowIndex) {
        // 拆分当前行的选中列(若未选则为空数组)
        var selectedCols = rowResponses[rowIndex] ? rowResponses[rowIndex].split(',') : [];
        // 遍历所有列,判断是否选中,未选中则填null
        columns.forEach(function(col) {
          fullCellResponses.push(selectedCols.includes(col) ? col : null);
        });
      });

      // 将结果转为逗号分隔的字符串(可替换为你需要的标识,比如空字符串)
      response = fullCellResponses.map(val => val ?? "null").join(',');

      // 【可选】如果需要更易读的格式(按行展示),替换上面的response赋值为以下代码:
      // var formattedGrid = rows.map(function(row, rowIndex) {
      //   var selectedCols = rowResponses[rowIndex] ? rowResponses[rowIndex].split(',') : [];
      //   var rowText = `${row}: `;
      //   rowText += columns.map(col => selectedCols.includes(col) ? col : "未选择").join(", ");
      //   return rowText;
      // }).join("\n");
      // response = formattedGrid;
    }

    if (title === "Email Address") {
      e_address = response;
    }

    emailBody += `${title}\n${response}\n\n`;
  });

  sendEmail(e_address, emailBody);
}

关键逻辑说明

  1. 获取网格结构:通过asCheckboxGridItem()转换组件,拿到所有行(尺码)和列(颜色)的列表,确保能覆盖所有单元格。
  2. 补全未选中项:遍历每一行,拆分该行的选中列,再逐个检查每个颜色列是否被选中——选中则保留列名,未选中则填充你指定的标识(示例用null,也可换成空字符串或"未选择")。
  3. 格式化输出:将补全后的所有单元格值拼接成字符串,或按行格式化(可选,更适合邮件阅读)。

为什么原代码无法获取未选中项?

Google表单的Checkbox Grid响应默认仅返回每行选中的列值,不会主动包含未选中项的占位符。通过手动遍历完整的行和列结构,我们可以补全这些缺失的状态,生成符合预期的完整响应数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:25:54