如何通过Apps Script在Google Sheets中解析Google表单复选框响应
复选框响应拆分方案
完全可以通过Google Apps Script实现复选框响应数据的自动拆分,适配你当前的投票统计场景。
核心处理逻辑
- 读取表单响应工作表的原始数据,第一列为受访者邮箱,后续列为复选框题的逗号拼接选项值
- 逐行遍历响应记录,将每列的复选框内容按英文逗号分割,清除选项前后的多余空格
- 按「邮箱+单题3个独立选项」的结构重组每行数据,写入专门的统计工作表
- 可绑定表单提交触发器,新响应提交时自动完成拆分,无需手动操作
可用脚本代码
将以下代码粘贴到表格的Apps Script编辑器中,按注释修改对应参数即可使用:
function splitCheckboxResponses() { // 填写存储原始表单响应的工作表名称 const rawSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("表单响应 1"); // 填写拆分后数据要存放的工作表名称,不存在则自动创建 const targetSheetName = "票数统计"; let targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(targetSheetName); if (!targetSheet) { targetSheet = SpreadsheetApp.getActiveSpreadsheet().insertSheet(targetSheetName); // 按实际题目修改表头,当前对应2道各3选项的复选框题结构 targetSheet.appendRow(["受访者邮箱", "第一题选项1", "第一题选项2", "第一题选项3", "第二题选项1", "第二题选项2", "第二题选项3"]); } // 读取全量原始数据,跳过第一行表头 const rawData = rawSheet.getDataRange().getValues().slice(1); const processedRows = []; rawData.forEach(record => { const userEmail = record[0]; // 拆分第一题的选中选项,默认分隔符为英文逗号 const q1Selected = record[1].split(",").map(opt => opt.trim()); // 拆分第二题的选中选项 const q2Selected = record[2].split(",").map(opt => opt.trim()); // 按目标格式拼接行数据,未选满3项时对应单元格留空 processedRows.push([ userEmail, q1Selected[0] || "", q1Selected[1] || "", q1Selected[2] || "", q2Selected[0] || "", q2Selected[1] || "", q2Selected[2] || "" ]) }) // 批量写入处理完成的数据 if (processedRows.length > 0) { targetSheet.getRange(targetSheet.getLastRow() + 1, 1, processedRows.length, processedRows[0].length).setValues(processedRows); } }
使用说明
- 代码中工作表名称、表头字段需和你实际的表格结构保持一致
- 首次运行脚本时需按弹窗提示授予表格读写权限,属于正常操作
- 若需要新提交的响应自动拆分,可在Apps Script的触发器页面,给
splitCheckboxResponses函数绑定「表单提交」事件触发 - 脚本适配你当前「每题固定选3项」的投票规则,若存在用户未选满3项的情况,对应列会自动留空,不影响后续票数统计
内容的提问来源于stack exchange,提问作者Brooke Taylor
相关产品推荐
相关产品推荐

