优化Google脚本以隐藏列

时间:2013-11-21 20:33:42

标签: optimization google-apps-script google-sheets show-hide

这两个脚本非常慢。我使用大约32列×1000行的数据集(增长很快)。

我已阅读甚至使用代码处理类似数组的数据,这样您只能拨打一次Google服务电话,但我不确定这对我的情况有何帮助。

我需要隐藏某些列,具体取决于使用Google工作表的人

以下是实际代码:

function HideColumns(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange("A1");
  sheet.hideColumn(range);
  range = sheet.getRange("C1:E1");
  sheet.hideColumn(range);
  range = sheet.getRange("G1");
  sheet.hideColumn(range);
  range = sheet.getRange("I1");
  sheet.hideColumn(range);
  range = sheet.getRange("K1");
  sheet.hideColumn(range);
  range = sheet.getRange("Q1:Z1");
  sheet.hideColumn(range);
  range = sheet.getRange("AC1:AG1");
  sheet.hideColumn(range);
}

function ShowColumns(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange("A1");      
  sheet.unhideColumn(range);
  range = sheet.getRange("C1:E1");
  sheet.unhideColumn(range);
  range = sheet.getRange("G1");
  sheet.unhideColumn(range);
  range = sheet.getRange("I1");
  sheet.unhideColumn(range);
  range = sheet.getRange("K1");
  sheet.unhideColumn(range);
  range = sheet.getRange("Q1:Z1");
  sheet.unhideColumn(range);
  range = sheet.getRange("AC1:AG1");
  sheet.unhideColumn(range);
}

2 个答案:

答案 0 :(得分:3)

不幸的是隐藏列是“仅电子表格”功能,无法使其更快或批量生效...

也许您可以想象一个自定义UI(使用UiApp或HTMLService构建)来仅显示用户相关数据?但这可能是不可能的,这取决于您需要多少电子表格特定的功能......,而不是说它可能代表的工作。

答案 1 :(得分:1)

对于ShowColumns()脚本,您只需要取消隐藏工作表中的所有列吗?如果是这样,你至少可以简化一下:

function ShowColumns() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange("1:1");
  sheet.unhideColumn(range);
}