当前位置: 首页 > 知识库问答 >
问题:

google sheets根据今天的日期隐藏行

谭卜鹰
2023-03-14

在GoogleSheets中,当a列中的日期等于或早于今天的日期时,我需要一个脚本来自动隐藏工作表1中的行。

因此,如果今天是2018年8月29日,单元格A3中的日期是2018年8月28日,则第3行的所有内容都将隐藏

但是如果A3单元格中的日期是2018年8月30日,那么所有第3行都将是可见的,直到当前日期是2018年8月31日。

谢谢你能提供的任何帮助。

我一直在使用这段代码,我发现它隐藏了行,而不是在当前月份。我似乎不知道如何修改它以查看当前日期并隐藏比当前日期早的行。

  function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuItems=[{name: 'HideRows', functionName: 'hideRows'}];
  ss.addMenu('Script', menuItems);    
  };

 function hideRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Sheet1");
  var v = s.getRange("A:A").getValues();
  var today = new Date();
  var m = today.getMonth();
  for(var i=3;i<v.length;i++)
    if(v[i][0]=="" || v[i][0].getMonth()>=m) break;
  if(i>3) s.hideRows(4,i-3)
  };

共有1个答案

华炜
2023-03-14

因此,正如我在上面的评论中指出的,过滤器可以工作。但是,如果您想习惯hideRows和脚本编写,下面应该可以做到这一点:

function hideRows() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var s = ss.getSheetByName("Sheet1");
    var v = s.getRange("A:A").getValues();
    var today = new Date();
    today.setHours(0, 0, 0, 0);
    for (var i = s.getLastRow(); i > 2; i--) {
        var t = v[i - 1];
        if (t != "") {
            var u = new Date(t);
            if (u < today) {
                s.hideRows(i);
            }
        }
    }
}

您可以清理变量名,并可能将其压缩一点。今天占用了当前时间,我将其设置为今天午夜,以避免认为我不应该显示2018年8月29日,因为现在是晚上11点。为了安全起见,我还自下而上地工作。范围中的数组是基于0的,但行编号是基于1的,这也有点微妙。

 类似资料:
  • 我命名了所有行数相同的区域(21),所有命名区域都以包含日期的单元格开头。当日期比今天的日期早时,我想隐藏其日期单元格下的所有行。或者,隐藏紧跟在日期之后的关联的21行。我不知道如何写剧本,但我会学的。我也发现我不能问一个问题,很抱歉。 我在stackoverflow中找到了一个脚本来隐藏日期比今天早的一行: 当工作表打开时,我希望日期早于今天的行会导致下21行被隐藏。

  • 获取今天的日期(年、月、日) 用法 Your browser does not support the video tag. 案例:小闹钟 功能:2019年12月25日,播放圣诞快乐歌

  • 问题内容: 我已经编写了一些代码来检查两个日期,即开始日期和结束日期。如果结束日期早于开始日期,则会提示您结束日期早于开始日期。 我还想添加检查开始日期是否在今天之前(今天和用户使用该应用程序的那天一样)。(下面的日期检查器代码,如果有任何影响,那么所有这些都为Android编写) 问题答案: 这有帮助吗?

  • 我有搜索框的表格。我想在这个搜索框中输入今天的日期,并点击提交按钮后,我从数据库中获得10天的记录。我在table(table=issueDevices的名称)中有以下列。Device_ID、Employee_id、Employee_Name、Employee_Ext、Issue_Date 当我像下面这样编写查询时,pst=con.prepareStatement(“select*from iss

  • 我不确定这是否可能? 我得拿到密码才能读 今天的月份即2月今天的日期即17月底的日期即31日,然后是一年中的其他11个月,在一行中按顺序排列 8月1日-31日|9月|10月|11月|12月|1月|2月|3月|4月|5月|6月|7月 请以最佳方式提供任何建议? 多谢 定时(timing的缩写)

  • 问题内容: 我正在使用PHPMyadmin,并使用PHP将值放入数据库中。我使用时间戳存储产品的到期日期,如下所示,例如: 我要选择所有到期日期等于今天的日期加上8天的日期(例如上面的那一天) 我也想在一个单独的页面中选择所有过期日期等于今天日期+ 2周的内容,如果有人可以帮助我,将不胜感激! 问题答案: 您可以使用以下查询来做到这一点: 您可以使用过去的日期。