隐藏/取消隐藏列

时间:2019-04-26 02:44:53

标签: google-apps-script google-sheets google-sheets-macros

我正在寻找有关一个宏的帮助,该宏将显示一组列,然后显示另一个宏,该宏将显示分配给两个单独按钮的同一组列。

目前,我有Hide BootcampShow Bootcamp按钮可以完成此任务,但我知道需要将列添加到此工作表中,以免将来出现此问题( <> I列或BJ:CO列)。有没有人能在将列添加/删除到工作表时保持范围完整性的解决方案?

工作表链接

https://docs.google.com/spreadsheets/d/17H9QMJ7Lmznon8G0dO4MGkidE0b6ymrvgt7fTE9gQBw/edit?usp=sharing

下面的当前代码

隐藏列

function HideBootcamp() {
  var spreadsheet = SpreadsheetApp.getActive();

   spreadsheet.getRange('I:I').activate();
   spreadsheet.getActiveSheet().hideColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());

   spreadsheet.getRange('BJ:CO').activate();
   spreadsheet.getActiveSheet().hideColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());

   spreadsheet.getRange('A2').activate();
};

显示列

function ShowBootcamp() {
  var spreadsheet = SpreadsheetApp.getActive();

   spreadsheet.getRange('I:I').activate();
   spreadsheet.getActiveSheet().showColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());

   spreadsheet.getRange('BJ:CO').activate();
   spreadsheet.getActiveSheet().showColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns());

   spreadsheet.getRange('A2').activate();
};

2 个答案:

答案 0 :(得分:0)

按名称隐藏列

如果您在上面的评论中对我的两个问题回答是,那么这将为您隐藏您的专栏。您所要做的就是为函数指定第一行中列的名称,当然您可能必须更改工作表名称。

function hideColumnByName(name) {
  var name=name||'HDR10';//debug
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Master');
  var rg=sh.getRange(1,1,1,sh.getLastColumn())
  var hA=rg.getValues()[0];
  sh.hideColumns(hA.indexOf(name)+1);
}

答案 1 :(得分:0)

缺少激活范围。

function hideColumnByName(name) {
  var name=name||'HDR10';//debug
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Master');
  var rg=sh.getRange(1,1,1,sh.getLastColumn()).activate();
  var hA=rg.getValues()[0];
  sh.hideColumns(hA.indexOf(name)+1);
}