Google表格根据今天的日期隐藏行

时间:2018-08-30 01:27:19

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

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

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

但是,如果日期为2018年8月30日在A3单元格中,则第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 个答案:

答案 0 :(得分:0)

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

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