Google App Script 按相同区域名汇总多行多列测试结果实现方法
Google AppScript 测试结果汇总实现方案
判定规则
- 仅将测试1、测试2、测试3列为必填考核项,测试4为可选项,计算时直接忽略
- 结果判定按优先级从高到低执行,高优先级规则触发时直接返回对应结果,不再匹配低优先级规则:
- 任意必填项结果为空/缺失,汇总结果记为 Result Missing
- 无缺失项时,任意必填项结果为Fail,汇总结果记为 Fail
- 无缺失、无Fail项时,任意必填项结果为Partial Pass,汇总结果记为 Partial Pass
- 三项必填项全部为Pass时,汇总结果记为 Pass
完整可运行脚本
function generateTestSummary() { // 配置项 - 可根据实际表格结构修改 const RAW_SHEET_NAME = "原始测试数据"; // 存放原始测试结果的工作表名 const SUMMARY_SHEET_NAME = "测试结果汇总"; // 生成汇总表的工作表名 const START_DATA_ROW = 2; // 原始数据起始行号(第1行为表头) // 列索引配置:A列为0,B列为1,依次类推 const COL_REGION = 0; // 区域所在列 const COL_POINT = 1; // 检测点位所在列 const COL_TEST1 = 2; // 测试1结果所在列 const COL_TEST2 = 3; // 测试2结果所在列 const COL_TEST3 = 4; // 测试3结果所在列 const ss = SpreadsheetApp.getActiveSpreadsheet(); const rawSheet = ss.getSheetByName(RAW_SHEET_NAME); if (!rawSheet) { SpreadsheetApp.getUi().alert(`找不到名为${RAW_SHEET_NAME}的原始数据表,请检查配置项`); return; } // 读取全量原始数据 const rawData = rawSheet.getDataRange().getValues(); const summaryData = [["区域", "检测点位", "汇总结果"]]; // 逐行遍历计算汇总结果 for (let i = START_DATA_ROW - 1; i < rawData.length; i++) { const row = rawData[i]; // 跳过无区域无点位的空行 if (!row[COL_REGION] && !row[COL_POINT]) continue; // 统一去除结果前后空格、不区分大小写匹配,兼容格式误差 const t1 = row[COL_TEST1] ? row[COL_TEST1].toString().trim() : ""; const t2 = row[COL_TEST2] ? row[COL_TEST2].toString().trim() : ""; const t3 = row[COL_TEST3] ? row[COL_TEST3].toString().trim() : ""; let result = "Result Missing"; // 按优先级判定结果 if (t1 && t2 && t3) { const t1Low = t1.toLowerCase(); const t2Low = t2.toLowerCase(); const t3Low = t3.toLowerCase(); if (t1Low === "fail" || t2Low === "fail" || t3Low === "fail") { result = "Fail"; } else if (t1Low === "partial pass" || t2Low === "partial pass" || t3Low === "partial pass") { result = "Partial Pass"; } else if (t1Low === "pass" && t2Low === "pass" && t3Low === "pass") { result = "Pass"; } } summaryData.push([row[COL_REGION], row[COL_POINT], result]); } // 处理汇总工作表:存在则清空旧数据,不存在则新建 let summarySheet = ss.getSheetByName(SUMMARY_SHEET_NAME); if (!summarySheet) { summarySheet = ss.insertSheet(SUMMARY_SHEET_NAME); } else { summarySheet.clearContents(); summarySheet.clearFormats(); } // 写入结果并做基础格式优化 summarySheet.getRange(1, 1, summaryData.length, 3).setValues(summaryData); summarySheet.getRange(1, 1, 1, 3).setFontWeight("bold"); summarySheet.autoResizeColumns(1, 3); SpreadsheetApp.getUi().alert("汇总结果生成完成"); }
使用方法
- 打开存放测试数据的Google表格,点击顶部菜单栏「扩展程序」→「Apps Script」打开脚本编辑器
- 删除编辑器内默认的空函数,粘贴上述完整代码
- 根据自有表格的实际结构,修改代码开头的配置项,确保表名、列位置和实际表格匹配
- 点击编辑器顶部的运行按钮,首次运行时按照提示完成谷歌账号授权(脚本仅操作当前表格,无额外权限风险)
- 运行结束后弹出完成提示,即可在独立的汇总工作表标签页查看结果;后续原始数据更新时,重新运行函数即可刷新汇总内容
内容的提问来源于stack exchange,提问作者RF919
相关产品推荐
相关产品推荐

