【发布时间】:2026-01-17 00:35:01
【问题描述】:
我有一个电子表格,我想根据日期自动排序,删除重复的行,并在列出的日期已过时删除行。我有自动排序和删除重复项,我只需要根据日期删除行的帮助。它将删除除第 2 行之外的所有行,无论日期如何。
到目前为止我有:
function deleteRow1() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = sheet.getLastRow()-1; // Number of rows to process
var dataRange = sheet.getRange(startRow, 2, numRows);
var data = dataRange.getValues();
for (i = 0; i < data.length; i++) {
var row = data[i];
var date = new Date();
var sheetDate = new Date(row);
var Sdate = Utilities.formatDate(date, 'EST-0500', 'MM:dd:yyyy')
var SsheetDate = Utilities.formatDate(sheetDate, 'EST-0500', 'MM:dd:yyyy')
if (Sdate > SsheetDate) {
sheet.deleteRow(i + 2)
}
}
}
【问题讨论】:
-
您为什么将日期比较为
Strings 而不是Dates?请注意"a" < "b"和"10" < "2"都是true... 另请注意,您的脚本会跳过检查它删除的每一行的行。 -
您会推荐哪些更改?我不认为我完全遵循...
-
我认为@tehhowch 正在推动的是摆脱 var sdate 和 var sSheetDate 的行,然后比较 if date>sDate (也许首先考虑一下今天现在比今天晚在午夜)。至少我认为您希望在 mmdd 之前使用 YYYY。此外,从最后一排到第一排感觉更安全,这样世界就不会在你脚下移动。
标签: google-apps-script google-sheets date-comparison