Skrypt kopiowania danych już nie działa

Nov 25 2020

Używałem skryptu w moim arkuszu Google, który znalazłem tutaj:

skopiuj dane z jednego arkusza do drugiego w skrypcie aplikacji Google i dołącz wiersz, jeden mały 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();
}

Kiedy teraz go uruchamiam, wyświetla mi się błąd:

Współrzędne zakresu docelowego są poza wymiarami arkusza.

co wcześniej się nie pojawiało. Czy ktoś ma pomysł, dlaczego to robi?

Odpowiedzi

1 Marios Nov 25 2020 at 18:31

Kwestia:

Błąd znajduje się w tej linii:

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

pasteSheet.getLastRow()zwraca numer wiersza znajdujący się na samym dole arkusza. Następnie rozważasz 12zakres wierszy, ale pasteSheetnie ma 12wierszy po ostatnim wierszu z zawartością.

Rozwiązania:

Dodaj więcej wierszy w pasteSheet:

lub możesz użyć insertRowsAfter :

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

Fragment kodu:

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