Совершенно новичок в JS, я готов выполнить некоторую повторяющуюся задачу в редакторе скриптов google sheet.
Идея состоит в том, чтобы проверить все строки tab1. Для каждой строки, если дата в столбце D старше, чем за 5 дней до сегодняшнего дня, она переносит полную строку в первую пустую строку tab2 и проверяет, что строки больше нет в tab1. Идея состоит в том, чтобы архивировать данные старше 5 дней.
Я мог бы сделать это с VBA, но я новичок в скрипте google sheet и мне нужна помощь сообщества (боюсь, у меня действительно нет основ JS).
Затем я добавлю триггер времени (я знаю, как это сделать!) Для этого сценария.
EDIT:
из этого скрипта удаляем:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Foglio1");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array
var currentDate = new Date();
var oneweekago = new Date();
oneweekago.setDate(currentDate.getDate() - 7);
for (i=lastrow;i>=2;i--) {
var tempdate = values[i-1][2];// arrays are 0 indexed so row1 = values[0] and col3 = [2]
if(tempdate < oneweekago) { sheet.deleteRow(i); } } }
И этот скрипт перемещает данные:
function moveCols() {
var ss = SpreadsheetApp.getActive();
var sourceSheet = ss.getSheetByName('Sheet1');
var destSheet = ss.getSheetByName('Sheet2');
sourceSheet.getRange('A:A').moveTo(destSheet.getRange('G1'))
sourceSheet.getRange('B:B').moveTo(destSheet.getRange('I1'))
sourceSheet.getRange('C:C').moveTo(destSheet.getRange('L1')) }
Мне удалось сделать следующее:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("input");
var destSheet = ss.getSheetByName("input archive");
var datarange = sheet.getDataRange();
var lastrow = datarange.getLastRow();
var values = datarange.getValues();// get all data in a 2D array
var currentDate = new Date();
var oneweekago = new Date();
oneweekago.setDate(currentDate.getDate() - 7);
for (i=lastrow;i>=2;i--) {
var tempdate = values[i-1][2];// arrays are 0 indexed so row1 = values[0] and col3 = [2]
if(tempdate < oneweekago) {
sourceSheet.getRange('i:i').moveTo(destSheet.getRange('LASTAVAILABLEROW'));
} } }
Но я понятия не имею, как вставить в последний ряд. Может это сработает?
var Avals = destSheet.getRange("A1:A").getValues();
var Alast = Avals.filter(String).length;