首页 > 解决方案 > 使用按钮清除日期早于今天的行的内容

问题描述

我正在尝试在标题中添加一些 Google 功能。我是初学者,但我已准备好迎接挑战。我设法制作了一个清除整个范围的按钮(C5:G102)。

但我现在想要一个代码,只为比今天更早的日期清除该范围。

我有包含主题、截止日期、描述等的列。整个日期从 C 列到 G 列。因此,当我单击按钮时,我希望该行中已经有比今天更早的截止日期的所有主题都被清除。日期在 D 列中。

可以这样做吗?

我只有这个:

function clearRange() {
  //replace 'Sheet1' with your actual sheet name
  var sheet = SpreadsheetApp.getActive().getSheetByName('ADD');
  sheet.getRange('C5:G102').clearContent();
}

所以,经过一番尝试,我想出了这个:但它不起作用......

function ClearOlder() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('ADD');
  var lastRow = sheet.getLastRow();
  var columnD = sheet.getRange(2, 4, sheet.getLastRow(), 1).getValues();
  var day = 24*3600*1000
  var today = parseInt((new Date().setHours(0,0,0,0))/day);

  for (var i=1; i < columnD.length; i++) {
    var dataday = parseInt(new Date(columnD[i][4]).getTime()/day);
    if (dataday < today) {sheet.getRange(i+1, 4, lastRow, 1).clearContent();}
  }
}

标签: google-apps-scriptgoogle-sheets

解决方案


您实际上可以直接在 javascript 中比较日期。您不需要该parseInt()功能。

var TEN_DAYS = 10 * 24 * 60 * 60 * 1000;
//             days hrs min   sec   ms

var expiry = new Date() - TEN_DAYS;

var date1 = new Date('2019-02-5');
var date2 = new Date('2019-02-1');
var date3 = new Date('2019-01-25');

console.log(expiry > date1); //Less than 10 days ago
console.log(expiry > date2); //Less than 10 days ago
console.log(expiry > date3); //More than 10 days ago

更新:您的 columnD 选择器已关闭。

function clearOlder() { 
  //consider camelCase --> clearOlder() 
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
  var lastRow = sheet.getLastRow(); 

  var columnD = sheet.getRange(2, 4, sheet.getLastRow(), 1).getValues(); //OP updated this to better fit their specific spreadsheet.

  var one_day = 24*3600*1000; 
  var expiry = new Date() - one_day; 

  for (var i=1; i < columnD.length; i++) { 

    var dataday = new Date(columnD[i][0]); 

    if (expiry > dataday) {
      sheet.getRange(i+1, 1, 1, 4).clearContent(); //OP updated this to better fit their specific spreadsheet.

    }
  } 
}

推荐阅读