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

基于客户名称与行范围的Google Sheets行隐藏代码排查

Google Sheets hideBill函数异常排查与修复

问题需求

需实现三个核心逻辑:

  • 当客户名称不为“PUB”时,隐藏19-23行
  • 当客户名称不为“VSPE”时,隐藏1016-1042行
  • 隐藏22行至999行中,账单最后一行之后的所有空行

现有代码的问题点

  1. 条件判断缺失VSPE分支:原代码仅处理了PUB、C和其他情况,完全未实现“不为VSPE时隐藏1016-1042行”的需求
  2. 行范围计算错误:
    • showRows(19,1042)从19行开始显示1042行,覆盖范围远超预期,会导致不该显示的行被错误显示
    • hideRows(1018,24)仅隐藏1018-1041行,与需求的1016-1042行范围不符
  3. 冗余的单元格激活操作:多次使用activate()无实际意义,反而可能引发范围选取错误
  4. 最后数据行判断逻辑有缺陷:
    • 仅检查E列最后一行,若E列无数据但其他列有有效内容,会误判最后数据行
    • 未限制在22-999行范围内查找,可能取到超出目标区间的行

修复后的代码

function hideBill() {
  var ss = SpreadsheetApp.getActive();
  var facture_sheet = ss.getSheetByName("Facture");
  var input_sheet = ss.getSheetByName("Input");
  var clientname = input_sheet.getRange("ClientName").getValue();

  // 处理19-23行的显示/隐藏:不为PUB则隐藏
  if (clientname !== 'PUB') {
    facture_sheet.hideRows(19, 5); // 19到23共5行(23-19+1=5)
  } else {
    facture_sheet.showRows(19, 5);
  }

  // 处理1016-1042行的显示/隐藏:不为VSPE则隐藏
  if (clientname !== 'VSPE') {
    facture_sheet.hideRows(1016, 27); // 1016到1042共27行(1042-1016+1=27)
  } else {
    facture_sheet.showRows(1016, 27);
  }

  // 隐藏22-999行中最后数据行之后的空行
  var lastDataRow = getLastDataRow(facture_sheet, 22, 999);
  if (lastDataRow < 999) {
    var startHideRow = lastDataRow + 1;
    var numRowsToHide = 999 - startHideRow + 1;
    facture_sheet.hideRows(startHideRow, numRowsToHide);
  }
}

function getLastDataRow(sheet, startRow, endRow) {
  // 在指定行范围内查找有数据的最后一行
  var range = sheet.getRange(startRow, 1, endRow - startRow + 1, sheet.getLastColumn());
  var values = range.getValues();
  
  for (var i = values.length - 1; i >= 0; i--) {
    // 检查当前行是否有非空值
    if (values[i].some(cell => cell !== "")) {
      return startRow + i;
    }
  }
  // 若范围内无数据,返回startRow
  return startRow;
}

修复说明

  • 拆分了PUB和VSPE的独立判断逻辑,严格匹配需求
  • 修正了hideRows/showRows的行数量计算(结束行-开始行+1)
  • 移除了所有冗余的activate()操作,直接通过行号计算操作范围
  • 重写getLastDataRow函数:支持指定行范围,检查整行是否有非空值,避免单列判断的局限性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 08:25:17