Как перенести строку на другую вкладку, чтобы заархивировать ее в googlesheet - PullRequest
0 голосов
/ 07 января 2019

Совершенно новичок в 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;

1 Ответ

0 голосов
/ 07 января 2019

У вас нет времени, чтобы написать полный ответ, но надеюсь, что это даст вам некоторое руководство

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("data");
var sheet2 = ss.getSheetByName("archive");

var data = sheet1.getRange("I1:I"+sheet.getLastRow()).getValues();
sheet2.getRange("A" + (sheet2.getLastRow()+1) + ":A" +sheet.getLastRow()).setValues(data);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...