首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Google Sheets中隐藏行的最有效方法是什么?

在Google Sheets中隐藏行的最有效方法是什么?
EN

Stack Overflow用户
提问于 2017-03-05 07:43:12
回答 1查看 351关注 0票数 1

我已经写了这个脚本,它应该每晚运行,但是问题是它执行的时间太长,所以服务器关闭了它。我们有一个电子表格,我们用它作为日历来组织我们的学校生产,我们希望它能自动隐藏过去的日子。我大约在8个月前写了这个脚本,我花了大约6-7个小时让它工作,在我们深入电子表格之前,它工作了一段时间,这需要太长的时间。下面是脚本:

代码语言:javascript
复制
function hidePastDays(){
  var ss = SpreadsheetApp.getActive();
  var s = ss.getSheetByName("OVERVIEW");
  var s2 = ss.getSheetByName("settings");
  var rows = s.getMaxRows();
  var today = s2.getRange(3, 2).getValue();
  var allsheets = ss.getSheets();
  s.showRows(1, rows);
  var dates = s2.getRange(3,4,rows-2).getValues();
  for (var d=0; d < dates.length; d++){
    if (dates[d]<today-2){
      s.hideRows(d+3, 1);
      for (var g in allsheets){
        var sheet=allsheets[g];
        if (sheet.getSheetName() == "OVERVIEW" || sheet.getSheetName() == "settings"){}
        else {
          sheet.hideRows(d+3, 1);
        }
      }
    }
  }
}

我在想,只需向下扫描到正确的行,然后将它们作为一个范围隐藏起来,肯定会更容易,因为我认为脚本一次只做一个。

感谢您能提供的任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-05 11:21:27

下面是一个查找表示比昨天早的日期的行范围的例程。它一次隐藏所有的数据,我猜这比一次只隐藏一个要快得多。当然,这需要假设您可以按日期顺序获取所有日期。

代码语言:javascript
复制
function hideYesterdays()
{
  var sht = SpreadsheetApp.getActiveSheet();
  var drng = sht.getDataRange();
  var drngA = drng.getValues();
  var rows = drng.getLastRow();
  var firstRow = 6; //the row where dates start
  var day = 86400000;
  var yesterday = new Date().getTime() - day;// 1 day is 86400000 milliseconds

  var rowcntr = 0;
  while(drngA[rowcntr + firstRow][0] < yesterday) //the zero comes from the fact that my dates were in row 1. 
  {
    rowcntr++;
  }
  sht.hideRows(firstRow, rowcntr);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42602692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档