我有一个电子表格,我想根据日期自动排序,删除重复的行,如果列出的日期过去了,则删除行。我有自动排序和删除重复项的功能,我只需要基于日期删除行的帮助。它将删除除第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)
}
}
}
答案 0 :(得分:0)
我想这就是它的样子。对于您的例行工作,我做了最少的改动,将精力集中在看起来好像很麻烦的部分上。
尤其是,将日期与日期进行比较,删除/等于时间。另外,今天困扰我一遍又一遍的构造,所以我把它排除在循环之外。
此外,我从头开始进行工作,以确保删除操作不会影响接下来要考虑的行。
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();
var today = new Date();
today.setHours(0,0,0,0);
for (i = data.length-1; i > -1; i--) {
var row = data[i];
var sheetDate = new Date(row);
sheetDate.setHours(0,0,0,0);
if (today > sheetDate) {
sheet.deleteRow(i + 2)
}
}
}
将i + 2更改为startRow + i可能是一个不错的选择。