У меня есть три листа, по которым я хочу передавать строки данных между ними на основе определенных условий.От листа1 до листа2 на основе текстовой строки и от листа2 до листа3 на основе разницы между сегодняшней датой и введенной датой.Однако мои попытки пока были довольно бесплодными.
Я хочу переместить данные с листа1 на лист2 в зависимости от того, читается ли в столбце «P» значение «Завершено» или «Выброшено».Я также хотел записать дату, когда она была изменена на один из вышеуказанных вариантов в столбце «O».
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var c = ss.getSheetByName("Case Logs");
var r = ss.getSheetByName("Recent Cases");
var data = c.getDataRange().getValues().map(function(x) {return x[16];});
var numColumns = c.getLastColumn();
var current = new Date();
for (var i= data.length-1; i>=0; i--) {
if(["Completed"].indexOf(data[i])>-1) {
var row = i+1;
var target = r.getRange(r.getLastRow() + 1, 1);
c.getRange('O').setValue(current);
c.getRange(row, 1, 1, numColumns).copyTo(target);
c.getRange(row, 1, 1, numColumns).clearContent();
c.getRange(row, 1, 1, numColumns).clearNote();
}
if(["Thrown Out"].indexOf(data[i])>-1) {
var row = i+1;
var target = r.getRange(r.getLastRow() + 1, 1);
c.getRange('O').setValue(current);
c.getRange(row, 1, 1, numColumns).copyTo(target);
c.getRange(row, 1, 1, numColumns).clearContent();
c.getRange(row, 1, 1, numColumns).clearNote();
}
}
}
Для второго условия я хотел переместить строки с листа2 на лист3, основываясь на том, что датаперечисленные в столбце «O» больше или равны четырехмесячной разнице с текущей датой.
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getSheetByName("Recent Cases");
var a = ss.getSheetByName("Archived Cases");
var data = r.getDataRange().getValues().map(function(x) {return x[16];});
var numColumns = r.getLastColumn();
var TIME_FRAME = 1000 * 60 * 60 * 24 * 120;
var now = new Date();
var past = new Date(now.getTime() - TIME_FRAME);
for (var i= data.length-1; i>=0; i--) {
if (["**Column DATE**"].indexOf(logs[i])>-1 >= past){
var row = i+1;
var target2 = a.getRange(a.getLastRow() + 1, 1);
r.getRange(row, 1, 1, numColumns).copyTo(target2);
r.getRange(row, 1, 1, numColumns).clearContent();
r.getRange(row, 1, 1, numColumns).clearNote();
}
}
}
Хотя, поскольку я буквально швыряю все части программирования, которые работают, все дело в том, чтобеспорядок.Я не знаю, как ссылаться на определенную ячейку в столбце и подтверждать, является ли она датой, и первый раздел onEdit больше не работает после того, как я попытался ввести в него дату.