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()); }
修正说明
- 将
data[i][6]改为data[i][5],精准对应F列数据。 - 循环改为从最后一行向前遍历(
i = data.length - 1到i >= 1),确保隐藏行操作不会干扰未处理的行索引。 - 修正注释内容,明确标注对应列信息。
内容的提问来源于stack exchange,提问作者Damian Burgos
相关产品推荐
相关产品推荐

