工作表中的以下列范围对应于括号中的选择: D-K 列(“NORMAL”)、L-S 列(“HARD”)、T-AA 列(“MAX POINTS”)
我希望脚本能够工作,以便选择其中一个下拉选项将隐藏与其他两个下拉选项相对应的列范围(即,如果您选择“HARD”,它将隐藏列 D-K 以及 T-AA ).
我在这里做错了什么?我当然肯定有一点。链接
var ss=SpreadsheetApp.getActive();
var value1 = "NORMAL";
var value2 = "HARD";
var value3 = "MAX POINTS";
var activeSheet = ss.getActiveSheet();
var cell = activeSheet.getRange("B2").getValue();
function HideColumn() {
if(cell == value1) {
activeSheet.hideColumns(12, (27-7+1));
}
else if(cell == value2) {
activeSheet.hideColumns(4, (14-7+1));
activeSheet.hideColumns(21, (14-7+1));
}
else if(cell == value3) {
activeSheet.hideColumns(4, (22-7+1));
}
}
您在单元格 B2 中有一个下拉菜单。
根据所选值,您想要显示所选值的列并隐藏其他选项的列。
switch
IF
语句的替代方法。要运行此答案: 复制到项目编辑器,
创建一个可安装的
onEdit()
// running as an installable onEdit() trigger
// watching cell B2
function showHideColumns(e){
var sheetName = "Today's Matchups"
// Logger.log(JSON.stringify(e)) // DEBUG
if (e.range.columnStart ==2 && e.range.rowStart ==2 && e.range.getSheet().getName() == sheetName){
// correct sheet and correct cell
// Logger.log("DEBUG: correct sheet and correct cell")
}
else{
// not the correct sheet/cell
// Logger.log("DEBUG: not the correct sheet/cell")
return
}
var ss=SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheetByName(sheetName)
var value1 = "NORMAL";
var value2 = "HARD";
var value3 = "MAX POINTS";
var value1ColStart = 4
var value2ColStart = 12
var value3ColStart = 20
var valueSetNumCols = 8
// Columns D-K ("NORMAL"),
// Columns L-S ("HARD"),
// Columns T-AA ("MAX POINTS")
var cell = e.value
// Logger.log("DEBUG: dropdown value = "+cell)
switch (cell) {
case value1:
// NORMAL
// show NORMAL, hide Hard & Max Points
// show all columns (including NORMAL)
sheet.showColumns(value1ColStart,24)
// hide Hard
sheet.hideColumns(value2ColStart, valueSetNumCols)
// hide MaxPoints
sheet. hideColumns(value3ColStart, valueSetNumCols)
break
case value2:
// HARD
// show HARD, hide Normal & Max Points
// show all Columns
sheet.showColumns(value1ColStart,24)
// hide Normal
sheet.hideColumns(value1ColStart, valueSetNumCols)
// hide MaxPoints
sheet. hideColumns(value3ColStart, valueSetNumCols)
break
default:
// Max Points
// show Max Points, hide Normal & Hard
// show all Columns
sheet.showColumns(value1ColStart,24)
// hide Normal
sheet.hideColumns(value1ColStart, valueSetNumCols)
// hide Hard
sheet. hideColumns(value2ColStart, valueSetNumCols)
}
}
还在表格上显示/隐藏列=“战斗结果输出”
// runnings as an installable onEdit() trigger
// watching cell B2
// also hide columns on "Battle Results Output"
function showHideColumns(e){
var sheetName = "Today's Matchups"
// Logger.log(JSON.stringify(e)) // DEBUG
if (e.range.columnStart ==2 && e.range.rowStart ==2 && e.range.getSheet().getName() == sheetName){
// right sheet and right cell
// Logger.log("DEBUG: right sheet and right cell")
}
else{
// not the right sheet/cell
// Logger.log("DEBUG: not the right sheet/cell")
return
}
var ss=SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheetByName(sheetName)
var value1 = "NORMAL";
var value2 = "HARD";
var value3 = "MAX POINTS";
var value1ColStart = 4
var value2ColStart = 12
var value3ColStart = 20
var valueSetNumCols = 8
// Columns D-K ("NORMAL"),
// Columns L-S ("HARD"),
// Columns T-AA ("MAX POINTS")
/*
* HIDE columns on Battle Results Output
*/
var battleResultsName = "Battle Results Output"
var battleSheet = ss.getSheetByName(battleResultsName)
// Value 1 = show D&E, Hide F,G&H
var value1BattleColStart = 4 // Column D
var value1BattleSetNumCols = 2
// Value 2 = show F&G, Hide D,E&H
var value2BattleColStart = 6 // Column F & G
var value2BattleSetNumCols = 2
// Value 3 = show H, Hide D&F
var value3BattleColStart = 8 // Column D
var value3BattleSetNumCols = 1
// number of columns for all results
var valueBattleShowAllCols = value1BattleSetNumCols+value2BattleSetNumCols+value3BattleSetNumCols
var cell = e.value
// Logger.log("DEBUG: dropdown value = "+cell)
switch (cell) {
case value1:
// NORMAL
// show NORMAL, hide Hard & Max Points
// show Normal
sheet.showColumns(value1ColStart,24)
// hide Hard
sheet.hideColumns(value2ColStart, valueSetNumCols)
// hide MaxPoints
sheet.hideColumns(value3ColStart, valueSetNumCols)
/*
* HIDE columns from Battle Results
*/
// show all including Normal
battleSheet.showColumns(value1BattleColStart,valueBattleShowAllCols)
// hide Hard
battleSheet.hideColumns(value2BattleColStart,value2BattleSetNumCols)
// hide MaxPoints
battleSheet.hideColumns(value3BattleColStart,value3BattleSetNumCols)
break
case value2:
// HARD
// show HARD, hide Normal & Max Points
// show Normal
sheet.showColumns(value1ColStart,24)
// hide Normal
sheet.hideColumns(value1ColStart, valueSetNumCols)
// hide MaxPoints
sheet.hideColumns(value3ColStart, valueSetNumCols)
/*
* HIDE columns from Battle Results
*/
// show all including Normal
battleSheet.showColumns(value1BattleColStart,valueBattleShowAllCols)
// hide Normal
battleSheet.hideColumns(value1BattleColStart,value1BattleSetNumCols)
// hide MaxPoints
battleSheet.hideColumns(value3BattleColStart,value3BattleSetNumCols)
break
default:
// Max Points
// show Max Points, hide Normal & Hard
// show Normal
sheet.showColumns(value1ColStart,24)
// hide Normal
sheet.hideColumns(value1ColStart, valueSetNumCols)
// hide Hard
sheet. hideColumns(value2ColStart, valueSetNumCols)
/*
* HIDE columns from Battle Results
*/
// show all including Normal
battleSheet.showColumns(value1BattleColStart,valueBattleShowAllCols)
// hide Normal
battleSheet.hideColumns(value1BattleColStart,value1BattleSetNumCols)
// hide Hard
battleSheet.hideColumns(value2BattleColStart,value2BattleSetNumCols)
}
// Logger.log("DEBUG: Selection: "+cell+" the end")
}