La copie du script de données ne fonctionne plus

Nov 25 2020

J'utilise un script dans ma feuille Google que j'ai trouvé ici:

copier des données d'une feuille à une autre dans le script de l'application Google et ajouter une ligne, un petit problème

  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();
}

Quand je l'exécute maintenant, cela me donne une erreur:

Les coordonnées de la plage cible sont en dehors des dimensions de la feuille.

qui ne se présentait pas avant. Quelqu'un a-t-il une idée pourquoi il fait cela?

Réponses

1 Marios Nov 25 2020 at 18:31

Problème:

L'erreur est dans cette ligne:

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

pasteSheet.getLastRow()renvoie un numéro de ligne qui se trouve tout en bas de votre feuille. Ensuite, vous considérez la 12plage de lignes mais le pasteSheetn'a pas de 12lignes après la dernière ligne avec le contenu.

Solutions:

Ajoutez plus de lignes dans le pasteSheet:

ou vous pouvez utiliser insertRowsAfter :

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

Extrait de code:

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();
}