google-apps-script - 谷歌表格根据今天的日期隐藏行

标签 google-apps-script google-sheets google-sheets-api

在 Google 表格中,当 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)
  };

最佳答案

正如我在上面的评论中指出的那样,过滤器可以发挥作用。但如果您想习惯 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);
            }
        }
    }
}

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

关于google-apps-script - 谷歌表格根据今天的日期隐藏行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52088049/

相关文章:

javascript - 在 Google Apps 脚本中使用 Javascript

google-apps-script - 将 Google 文档评论连同突出显示的文本导出到 Google 表格中?

google-apps-script - 如何在 Google 表单/表格中编辑表单提交的回复?

google-apps-script - GAS/Google Sheets在insertRows、insertRowAfter、insertRowsAfter的应用中出错

java - 谷歌电子表格 API - com.google.gdata.util.ParseException : Invalid root element

google-apps-script - UrlFetchApp 超时

javascript - Google脚本找不到getRange也没有运行权限

javascript - 如何使用 Google Apps 脚本在电子邮件主题中使用表情符号?

javascript - 此上下文中的异常 : Cannot call SpreadsheetApp. getUi()

node.js - 无法生成发送给用户以请求访问特定非公开 Google 工作表的 URL