1

这两个脚本速度非常慢。我使用大约32列1000行(快速增长)的数据集。优化谷歌脚本以隐藏列

我已阅读甚至使用代码来处理像数组这样的数据,以便您只能对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); 
} 

回答

1

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

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

不幸中隐藏列是一个“电子表格只有”功能,没办法使其更快或成批......

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