Очистить содержимое строк с датой старше, чем сегодня, с помощью кнопки - PullRequest
0 голосов
/ 10 февраля 2019

Я пытаюсь включить функцию Google, чтобы сделать это в заголовке.Я очень новичок, но я готов принять вызов.Мне удалось создать кнопку, которая очищает весь диапазон (C5: G102).

Но теперь мне нужен код, который очищает этот диапазон только для дат, которые старше, чем сегодня.

Iесть столбцы с темой, крайним сроком, описанием и т. д. Вся дата переходит от столбца 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();}
  }
}

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Да!Я понял !!!

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

  var columnD = sheet.getRange(1, 4, sheet.getLastRow(), 5).getValues(); 

  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, 5).clearContent();

    }
  } 
}
0 голосов
/ 11 февраля 2019

Вы можете сравнить дату непосредственно в 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.

    }
  } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...