Google apps script Google Sheets应用程序脚本:条件隐藏或显示列
我试图根据A3:A列中的值隐藏或显示值 基本上,在所有工作表中循环,如果列A中的值为“HIDE”,则隐藏该行。如果列A中的值为“SHOW”,则显示该行。当前正在从设置页面上的at按钮运行它Google apps script Google Sheets应用程序脚本:条件隐藏或显示列,google-apps-script,google-sheets,dynamic,formatting,Google Apps Script,Google Sheets,Dynamic,Formatting,我试图根据A3:A列中的值隐藏或显示值 基本上,在所有工作表中循环,如果列A中的值为“HIDE”,则隐藏该行。如果列A中的值为“SHOW”,则显示该行。当前正在从设置页面上的at按钮运行它 循环浏览所有表格 在工作表A行的单元格中循环 如果单元格包含“隐藏”,则隐藏该行 如果单元格包含“显示”,则显示该行 我最初的尝试是: function fourthTry(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); va
- 循环浏览所有表格
- 在工作表A行的单元格中循环
- 如果单元格包含“隐藏”,则隐藏该行
- 如果单元格包含“显示”,则显示该行
- 在工作表A行的单元格中循环
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
}
}
函数第四次(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets();
var rowsToCheck=198;
var-columnsToCheck=1;
//**在每张纸上循环**
对于(变量i=0;i
我也愿意采用完全不同的方法,只要它根据所有工作表的a行中的文本隐藏和显示列
**基于答案的固定代码:
/**
* 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
}
}
}
/**
*标题:
*如果第1行包含文本“隐藏”,则隐藏一行
*如果第1行包含文本“Show”,则显示一行
*/
函数UpdateCategories(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets();
//**在每张纸上循环**
对于(变量i=0;i
您的问题在这里:var range=activeSheet.getRange(rowsToCheck,columnsToCheck);
它总是var range=activeSheet.getRange(lastrow,1);
但是它需要遍历行。因此它需要如下所示:
var range=activeSheet.getRange(i+startrow,1);
无论数据的起始行是什么。使用setValues()迭代数据有更快捷的方法,但我将留给您自己调查Welcome,the DavideLight!您能澄清为什么“显示”吗选项是必需的?默认情况下,不会显示所有行,除非它们被此脚本隐藏,因为它们在列A中有“Hide”?除非您有另一个脚本放置“Show”在隐藏行中,但不同时取消隐藏。可能我缺少一些内容。这是模板。因此,在“设置”页面上,您可以使用设置页面中的值填充inn类别和子类别。这将使用设置页面中的值填充不同的页面。我想隐藏空行,因此我在a列中创建了一个条件单元格,用于检查Different值并返回“show”或“hide”。我还希望以后可以添加更多类别,因此脚本应该能够基于该值显示和隐藏。如果有意义,请不要在循环中使用活动工作表。请改用工作表[I]。我不会使用固定数量的行,而是使用工作表[I]。getLasrRow()到目前为止,我没有收到好的反馈,而是修复了上面的代码以反映您所说的内容。我怀疑我的问题可能与以下行有关:`var range=activeSheet.getRange(rowsToCheck,columnsToCheck);var rangeValue=range.getValue();`谢谢你的回答!这解决了我的主要问题。我现在唯一缺少的是if(rangeValue==“SHOW”)中的代码。它们有一个.hideRow(range),但没有一个等效的.showRow(range)。有没有想过我如何解决这个问题?我想出来了,非常感谢!)