He estado trabajando en este código y he investigado las últimas semanas y sin tener mucha suerte. Estoy buscando configurar un gatillo que escaneará el COLC de las fechas y si la fecha ha pasado, mueva esa fila específica a otra hoja.

A continuación se muestra donde estoy actualmente.

Tenga en cuenta que tengo la fecha de hoy almacenada en la celda 'O2' de la hoja de "lenguaje contractual".

He recibido este código para trabajar con texto, pero no con las fechas.

¡Cualquier consejo es muy apreciado!

function MovetoPastShows2() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Confirmed Deals'); //source sheet
  var testrange = sheet.getRange('C:C');
  var testvalue = testrange.getValues();
  var todaysheet = ss.getSheetByName('Contract Language');
  var todaycol = todaysheet.getRange('O2');
  var today = todaycol.getValues().valueOf();
  var csh = ss.getSheetByName('Confirmed (Past)'); //destination sheet
  var data = [];
  var j =[];


for (i=0; i<testvalue.length;i++) {
  if ( testvalue[i] = today) {
  data.push.apply(data,sheet.getRange(i+1,1,1,187).getValues());
  j.push(i);
 }
 }

 csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);

  for (i=0;i<j.length;i++){
  var k = j[i]+1;
  sheet.deleteRow(k);

  if (!(i == j.length-1)) {
  j[i+1] = j[i+1]-i-1;
}
}
};
1
Joey 30 jun. 2019 a las 21:35

1 respuesta

La mejor respuesta

Mover las filas pasadas a la hoja de destino

function MovetoPastShows2() {
  var ss = SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Confirmed Deals'); 
  var rg=sh.getDataRange();
  var vA=rg.getValues();
  var today=new Date(ss.getSheetByName('Contract Language').getRange('O2').getValue()).valueOf();
  var dsh=ss.getSheetByName('Confirmed (Past)'); 
  var d=0;
  for(var i=0;i<vA.length;i++) {
    if (new Date(vA[i][2]).valueOf()<=today) {
      dsh.appendRow(vA[i])
      sh.deleteRow(i+1-d);
      d++;
    }
  }
}
1
MetaMan 30 jun. 2019 a las 19:01