首页 > 解决方案 > 删除谷歌表格上过时条目的代码

问题描述

我在这里找到了这段代码,它对我来说应该是完美的。只是希望有人可以更改代码以删除日期为 2 周或更早的条目。因此,如果脚本今天运行,它将删除 10 月 26 日或更早的所有行。

    function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("MASTER");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array

var currentDate = new Date();//today

for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][2];// arrays are 0 indexed so row1 = values[0] and col3 = [2]
if ((tempDate!=NaN) && (tempDate <= currentDate))
{
  sheet.deleteRow(i);
}//closes if
}//closes for loop
}//closes function

标签: google-apps-scriptgoogle-sheets

解决方案


我相信你的目标如下。

  • 从您的脚本和问题中,您希望在“C”列的日期在从今天起 2 周之前删除行。

在这种情况下,如何进行以下修改?在您的脚本中,当“C”列的值为日期对象时,您正在比较日期对象。

从:

var currentDate = new Date();//today

for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][2];// arrays are 0 indexed so row1 = values[0] and col3 = [2]
if ((tempDate!=NaN) && (tempDate <= currentDate))
{
  sheet.deleteRow(i);
}//closes if
}//closes for loop
}//closes function

到:

  var currentDate = new Date();

  currentDate.setDate(currentDate.getDate() - 14); // Added: This means before 2 weeks from today.
  var d = currentDate.getTime(); // Added
  for (i = lastrow; i >= 3; i--) {
    var tempDate = values[i - 1][2];
    if ((tempDate != NaN) && (tempDate.getTime() <= d)) { // Modified
      sheet.deleteRow(i);
    }
  }
}

参考:


推荐阅读