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

Google Apps Script 故障求助:隐藏已售库存行功能失效

解决谷歌表格隐藏F列“Sold”行的脚本问题

你的脚本存在几个关键问题,导致无法正常运行,下面逐一说明并给出修正后的代码:

问题分析

  • 列索引错误:F列对应数组索引是5(JavaScript数组从0开始计数,A列=0、B列=1……F列=5),原代码用了data[i][6],实际指向G列,自然找不到F列的“Sold”内容。
  • 循环方向导致漏处理:从前往后遍历并隐藏行时,隐藏一行会让后续行的行号前移,导致部分行被跳过。改成从后往前循环就能避免这个问题。
  • 注释错误:原注释把F列误写成C列,容易造成混淆。

修正后的代码

function onOpen() {
  SpreadsheetApp.getUi().createMenu("Scripts")
    .addItem("Hide Sold Units", "soldUnits")
    .addItem("Show all rows", "showAllRows")
    .addToUi();
}

function soldUnits() {
  var sheet = SpreadsheetApp.getActive().getSheetByName("Pre-Owned");
  var data = sheet.getDataRange().getValues();
  // 从后往前循环,避免隐藏行后索引混乱
  for(var i = data.length - 1; i >= 1; i--) {
    // F列(第6列,数组索引5)内容为"Sold"时隐藏行
    if(data[i][5] === "Sold") {
      sheet.hideRows(i + 1);
    }
  }
}

function showAllRows() {
  var sheet = SpreadsheetApp.getActive().getSheetByName("Pre-Owned");
  sheet.showRows(1, sheet.getMaxRows());
}

修正说明

  1. 将data[i][6]改为data[i][5],精准对应F列数据。
  2. 循环改为从最后一行向前遍历(i = data.length - 1到i >= 1),确保隐藏行操作不会干扰未处理的行索引。
  3. 修正注释内容,明确标注对应列信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:50:05