[背景故事] 我有一个 Google 表格,用于通过电子邮件将时间表发送给分包商。每个分包商都有自己的工作表,我还有最后一张名为 MasterSchedule 的工作表。
主计划使用对所有单个工作表的引用,以便所有分包商计划都是可见的。不过,这真的很长。因此,我在所有工作表中都包含了一个辅助列,它只返回真或假,指示是否应在主控上显示一行。
然而,该行仍然显示在 master 上,但 helper 列恰好是 false。所以我使用了自动过滤器来隐藏它。
TLDR:
问题:Google Apps 脚本没有用于自动过滤的 API。就像使用标准等的 VBA。所以我看到的唯一选择是隐藏行。但这非常慢。我知道这个想法是减少对谷歌服务的调用次数,谷歌建议制作一个数组,然后在数组上执行一个调用。我不知道该怎么做。
我需要一个高效的脚本/函数来查看一列和每个读取为false的单元格,该函数将隐藏整行,并显示所有其他行。
最快的非脚本方法是使用 Google 表格版本的自动过滤器并简单地取消选中false。
我尝试制作一个 for 循环来读取列中的每个单元格,如果单元格值为 false,则每次迭代都会隐藏该行。它非常慢。
看:
function MasterFilter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var maxRows = sheet.getMaxRows();
//show all the rows
sheet.showRows(1, maxRows);
//get data from column B
var data = sheet.getRange('B:B').getValues();
//iterate over all rows
for(var i=5; i< data.length; i++){
if(sheet.getRange(i,2).getValue() == false){
sheet.hideRow(i);
}
}
}