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

多列数分支工作表OnOpen脚本优化与全分支适配求助

解决方案:优化Google Sheets OnOpen脚本并支持多工作表处理

优化后完整代码

function onOpen() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 定义所有需要处理的分支工作表名称
  const sheetNames = ["North", "East", "West", "South"];
  const startRow = 4; // 数据起始行

  sheetNames.forEach(sheetName => {
    const sh = ss.getSheetByName(sheetName);
    if (!sh) return; // 工作表不存在则跳过

    // 获取当前工作表的完整数据区域
    const lastRow = sh.getLastRow();
    const lastCol = sh.getLastColumn();
    const dataRange = sh.getRange(startRow, 1, lastRow - startRow + 1, lastCol);
    const values = dataRange.getValues();

    // 1. 取消所有行的隐藏状态
    sh.unhideRows(sh.getRange(startRow, 1, lastRow - startRow + 1));

    // 2. 预处理复选框状态和待隐藏行
    const checkboxColStart = 5; // E列为第5列
    const checkboxStatus = Array(values.length).fill().map(() => 
      Array(lastCol - checkboxColStart + 1).fill(true)
    );
    const rowsToHide = [];

    values.forEach((row, index) => {
      const branch = row[1]; // B列存储分支信息
      // 判断条件:B列空 或 分支不属于当前工作表
      if (!branch || branch !== sheetName) {
        checkboxStatus[index].fill(false);
        rowsToHide.push(startRow + index);
      }
    });

    // 3. 批量写入复选框状态
    if (checkboxColStart <= lastCol) {
      const checkboxRange = sh.getRange(startRow, checkboxColStart, checkboxStatus.length, checkboxStatus[0].length);
      checkboxRange.setValues(checkboxStatus);
    }

    // 4. 批量隐藏符合条件的行
    if (rowsToHide.length > 0) {
      rowsToHide.forEach(rowNum => sh.hideRows(rowNum));
    }

    // 5. 按C列(员工姓名)升序排序
    dataRange.sort({ column: 3, ascending: true });
  });
}

核心优化说明(解决卡顿问题)

  • 批量IO操作:原脚本逐行调用getRange().setValue(),每次都是一次耗时的网络IO。优化后一次性读取所有数据,处理完成后批量写入复选框状态,大幅减少IO次数。
  • 减少行操作频次:原脚本边判断边隐藏行,优化后先收集所有待隐藏行号再统一处理,避免频繁触发工作表渲染。
  • 动态适配列数:通过getLastColumn()自动获取每个工作表的实际列数,不再硬编码列数,适配不同车型的复选框列差异。

多工作表处理逻辑

  • 定义目标工作表名称数组sheetNames,循环遍历每个工作表单独处理。
  • 每个工作表的分支判断逻辑:检查B列值是否等于当前工作表名称,自动适配不同分支的过滤规则。
  • 若工作表不存在则自动跳过,避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 18:42:28