2017-08-06 108 views
-1

我是新手脚本,正在寻找一些帮助。我在这个话题上看到了一些其他的线索,但是他们比我的脑袋有点儿过头了。Google表格脚本隐藏列

我需要一个脚本来隐藏基于单元格内容的某些列(BB5)。

示例: 如果BB5 = 3隐藏J-K,AJ-AM,AV和BA列。 如果BB5 = 2隐藏列H-K,AF-AM,AU-AV和AZ-BA。

任何帮助将不胜感激。

谢谢, 罗尼

回答

0

隐藏列BB5基于值

示例:如果BB5 = 3隐藏列J-K,AJ-AM,AV,和BA。如果BB5 = 2,隐藏H-K,AF-AM,AU-AV和AZ-BA列。

function hideMyColumns() 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getActiveSheet(); 
    var vl=sh.getRange('BB5').getValue(); 
    var cols1=[10,11,36,37,38,39,48,53]; 
    var cols2=[8,9,10,11,32,33,34,35,36,37,38,39,47,48,52,53]; 
    switch(vl) 
    { 
    case 3: 
     for(var i=0;i<cols1.length;i++) 
     { 
     sh.hideColumns(cols1[i]); 
     } 
     break; 
    case 2: 
     for(var i=0;i<cols2.length;i++) 
     { 
     sh.hideColumns(cols2[i]); 
     } 
    } 

} 

用来找出列编号

enter image description here

您可以使用此功能找出列号码表。只需在正确的行和颜色上选择一个单元格,此函数将为您提供一个字符串,您可以将其复制到可在switch语句中使用的数组中。我使用上面提供的图像来获取所需的列号。

function getColumns() 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getActiveSheet(); 
    var color=ss.getActiveCell().getBackground(); 
    var row=ss.getActiveCell().getRow(); 
    var rg=sh.getDataRange(); 
    var vA=rg.getBackgrounds(); 
    var s=''; 
    var firstTime=true; 
    for(var i=0;i<vA.length;i++) 
    { 
    for(var j=0;j<vA[0].length;j++) 
    { 
     if(i+1==row && vA[i][j]==color) 
     { 
     if(!firstTime){s+=',';} 
     s+=Number(j+1); 
     firstTime=false; 
     } 
    } 
    } 
    s+='<br />For color = ' + color + '<br />Row = ' + row; 
    var userInterface=HtmlService.createHtmlOutput(s); 
    SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Column Numbers'); 
}