首页 > 解决方案 > 根据列值隐藏列

问题描述

我想隐藏第 5 行中值为 0 的列。

我已经尝试了以下代码,但它似乎不起作用。

function myFunction() {
 
}
function onEdit(){
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var lastColumn = sheet.getLastColumn();
 
  for(i=1 ; i<=lastColumn ; i++){
    var status = sheet.getRange(5+i).getValue(); //change "5" to desired column
    if (status == "0"){//change "0" to desired text
      sheet.hideColumns(i);//hide row if true
    }  
    else{
      sheet.showColumns(i);//unhide row if false
    }
  }
}

这是错误

例外:在 onEdit 找不到范围(最佳副本:10:24)

有什么建议么?

标签: javascriptgoogle-apps-scriptgoogle-sheetstriggers

解决方案


我猜你没有正确使用获取范围功能。

getRange(a1Notation) -- As per doc this a1Notation is string like A1 , A2 ..

你正在传递一个整数。或者如果您知道列将其更改为(A 或 B 根据需要)

getRange( 'A' + (5 + i))

我想您需要检查满足您需求的其他 getRange 实现。

请检查

https://developers.google.com/apps-script/reference/spreadsheet/sheet#getrangea1notation

[编辑]

function onEdit(){
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var lastColumn = sheet.getLastColumn();
 
  for(i=1 ; i<=lastColumn ; i++){
    var status = sheet.getRange(5,i).getValues(); //.getValue(); //change "5" to desired column
    if (status == "0"){//change "0" to desired text
      sheet.hideColumns(i);//hide row if true
    }  
    else{
      sheet.showColumns(i);//unhide row if false
    }
  }
}

此脚本将隐藏第 5 行中的所有列——值为 0。


推荐阅读