我试图隐藏或显示基于列A3: a中的值的值
基本上,循环遍历所有工作表,如果列A中的值为" hide ",则隐藏该行。如果列A中的值为"show",则显示该行。
- 循环遍历所有表
- 循环遍历工作表A行的单元格
- 如果单元格包含" hide ",则隐藏行
- 如果单元格包含" show ",显示行
- 循环遍历工作表A行的单元格
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()来遍历数据,但我将把这个留给你们自己去研究