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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:15:36