Google Sheets应用脚本:条件隐藏或显示列



我试图隐藏或显示基于列A3: a中的值的值

基本上,循环遍历所有工作表,如果列A中的值为" hide ",则隐藏该行。如果列A中的值为"show",则显示该行。

  • 循环遍历所有表
    • 循环遍历工作表A行的单元格
      • 如果单元格包含" hide ",则隐藏行
      • 如果单元格包含" show ",显示行

My original attempt:

function fourthTry(){

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var rowsToCheck = 198;
var columnsToCheck = 1;
// ** Loop Through every sheet **
for (var i = 0; i < sheets.length; i++ ){
Logger.log("i: " + i)
var activeSheet = ss.getActiveSheet();
// ** Loop through every cell in Row A **

for (var j=0; j < rowsToCheck ;  j++){
Logger.log("j: " + j);
var range = activeSheet.getRange(rowsToCheck,columnsToCheck);
var rangeValue = range.getValue();
Logger.log("rangeValue: " + rangeValue);
// IF cell contains HIDE, hiderow
if(rangeValue == "HIDE"){
Logger.log("Hidden value: " + rangeValue);
}
// IF cell contains SHOW, showrow
}
}

我也开放一个完全不同的方法,只要它隐藏和显示列基于文本的所有工作表的a行。

Setup Page

我想要隐藏基于值

的列的页面结构**修正了基于答案的代码:

/** 
* TITLE:
*     Hide a row if row 1 contains the text "HIDE" 
*     Show a row if row 1 contains the text "SHOW"
*/
function UpdateCategories(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
// ** Loop Through every sheet **
for (var i = 0; i < sheets.length; i++ ){

var lastRow = sheets[i].getLastRow();
var activeSheet = sheets[i];
Logger.log("===== " + activeSheet.getSheetName() + " =====");

// ** Loop through every cell in Row A **
for (var j=1; j < lastRow ;  j++){
var range = activeSheet.getRange(j,1);
var rangeValue = range.getValue();
//Logger.log(j + ". " + rangeValue);
// IF cell contains HIDE, hiderow
if(rangeValue == "HIDE"){
//Logger.log(j + ". " + rangeValue);
activeSheet.hideRows(j);
}
if(rangeValue == "SHOW"){
//Logger.log(j + ". " + rangeValue);
activeSheet.showRows(j);
}
// IF cell contains SHOW, showrow
}
}
}

您的问题在这里:var range = activeSheet.getRange(rowsToCheck,columnsToCheck);

总是var range = activeSheet.getRange(lastrow,1);,但它需要遍历行。所以它应该是这样的:

var range = activeSheet.getRange(i+startrow,1);无论你的开始行是数据。有一些更快的方法可以通过setValues()来遍历数据,但我将把这个留给你们自己去研究

最新更新