在 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/