Das Kopieren des Datenskripts funktioniert nicht mehr

Nov 25 2020

Ich habe ein Skript in meinem Google Sheet verwendet, das ich hier gefunden habe:

Kopieren Sie Daten in einem Google App-Skript von einem Blatt auf ein anderes und fügen Sie eine Zeile hinzu, ein kleines Problem

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

Wenn ich es jetzt ausführe, wird mir ein Fehler angezeigt:

Die Koordinaten des Zielbereichs liegen außerhalb der Abmessungen des Blattes.

was vorher nicht auftauchte. Hat jemand eine Idee, warum es das tut?

Antworten

1 Marios Nov 25 2020 at 18:31

Problem:

Der Fehler ist in dieser Zeile:

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

pasteSheet.getLastRow()Gibt eine Zeilennummer zurück, die sich ganz unten auf Ihrem Blatt befindet. Dann betrachten Sie den Zeilenbereich, 12aber der pasteSheethat keine 12Zeilen nach der letzten Zeile mit Inhalt.

Lösungen:

Fügen Sie weitere Zeilen hinzu in pasteSheet:

oder Sie können insertRowsAfter verwenden :

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

Code-Auszug:

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