Copiar el script de datos ya no funciona

Nov 25 2020

He estado usando un script en mi hoja de Google que encontré aquí:

Copie los datos de una hoja a otra en el script de la aplicación de Google y agregue una fila, un pequeño problema

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName("Copy");
  var pasteSheet = ss.getSheetByName("Paste");

  // get source range
  var source = copySheet.getRange(2,2,12,2);
  // get destination range
  var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,2,12,2);

  // copy values to destination range
  source.copyTo(destination);

  // clear source values
  source.clearContent();
}

Cuando lo estoy ejecutando ahora me da un error:

Las coordenadas del rango objetivo están fuera de las dimensiones de la hoja.

que no aparecía antes. ¿Alguien tiene una idea de por qué está haciendo esto?

Respuestas

1 Marios Nov 25 2020 at 18:31

Problema:

El error está en esta línea:

var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,2,12,2);

pasteSheet.getLastRow()devuelve un número de fila que se encuentra al final de la hoja. Luego, considera el 12rango de filas, pero pasteSheetno tiene 12filas después de la última fila con contenido.

Soluciones:

Agregue más filas en pasteSheet:

o puede usar insertRowsAfter :

pasteSheet.insertRowsAfter(pasteSheet.getLastRow(), 12)

Fragmento de código:

function myFunction() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName("Copy");
  var pasteSheet = ss.getSheetByName("Paste");

  // get source range
  var source = copySheet.getRange(2,2,12,2);
  // insert rows to make sure you have enough space
  pasteSheet.insertRowsAfter(pasteSheet.getLastRow(), 12)
  // get destination range
  var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,2,12,2);
   
  // copy values to destination range
  source.copyTo(destination);

  // clear source values
  source.clearContent();
}