Удалить строку, если столбец имеет дату старше одного месяца - PullRequest
0 голосов
/ 11 июня 2018

Я нашел этот код из https://stackoverflow.com/users/6656050/jeremy-kahan и немного его отредактировал.Мне нужен мой лист, чтобы удалить любую строку, когда запись в столбце L старше одного месяца, но сохранить строку, если ячейка в столбце L пуста, мне понадобятся некоторые указания.По запросу я могу предоставить копию моего листа и показать примеры.Это может показаться простым делом для других, но я чувствую себя в невыгодном положении только в 16 лет и просто изучаю Java.

function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");//assumes Sheet 1 is the name of the sheet
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array

var currentDate = new Date();//today
var monthOld = Date.now() + -30*24*3600*1000; 
for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][11];// arrays are 0 indexed so row1 = values[0] and col12 = [11]
if  (tempDate <= (monthOld))
{
  sheet.deleteRow(i);
}

}

Ответы [ 2 ]

0 голосов
/ 15 июня 2018
function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");//assumes Sheet 1 is the name of the sheet
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array

var currentDate = new Date();//today
var monthOld = Date.now() + -30*24*3600*1000; //to change amount of days adjust "30"
for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][11];// arrays are 0 indexed so row1 = values[0] and col12 = [11]
if ((tempDate!="") && (tempDate <= (monthOld)))
{
  sheet.deleteRow(i);
}
}
}
0 голосов
/ 12 июня 2018

Я собираюсь оказать некоторую помощь, хотя я буду наказан за это.В будущем проведите небольшое исследование, постарайтесь понять код и заставить его работать в ваших целях.Если вы не можете, и Google не помогает, ТОГДА зайдите и задайте ЯСНЫЙ вопрос со всеми деталями.Большинство лучших собак здесь даже не посмотрят на ваш вопрос, если все это не будет сделано.Кроме того, обязательно используйте правильные теги в своих вопросах.Это даже не покажет нужным людям без них.

Теперь к вашему ответу:

Вы хотите удалить строку, если дата в столбце L> 30 дней назад.Код, который вы указали, ищет в столбце C дату.Так что это первое, что нужно изменить.Во-вторых, условное if ((tempDate!=NaN) && (tempDate <= currentDate)) проверяет, является ли ячейка пустой (NaN), или дата <= СЕГОДНЯ, <strong>НЕ сегодня - 30. Итак, вам нужен способ вычислениячто сегодня - 30 дней: var monthOld = Date.now() + -30*24*3600*1000;, то вы можете сравнить это с датой в столбце L.

Если вы сделаете эти два изменения, вы получите:

function DeleteOldEntries() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Live Events");//assumes Live Events is the name of the sheet
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array

var currentDate = new Date();//today
var monthOld = Date.now() + -30*24*3600*1000; 
for (i=lastrow;i>=3;i--) {
var tempDate = values[i-1][11];// arrays are 0 indexed so row1 = 
values[0] and col12 = [11]
if ((tempDate!=NaN) && (tempDate <= (monthOld)))
{
  sheet.deleteRow(i);
}
}
}

Это должноделай что хочешь.Если у вас есть еще вопросы, дайте мне знать.Я рад помочь.

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