日期过后,在Google表格中删除一行

时间:2018-08-15 00:06:49

标签: google-apps-script google-sheets date-comparison

我有一个电子表格,我想根据日期自动排序,删除重复的行,如果列出的日期过去了,则删除行。我有自动排序和删除重复项的功能,我只需要基于日期删除行的帮助。它将删除除第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) 
    }
  }
}

1 个答案:

答案 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可能是一个不错的选择。