La copia dello script di dati non funziona più

Nov 25 2020

Ho usato uno script nel mio foglio google che ho trovato qui:

copia i dati da un foglio all'altro nello script dell'app Google e aggiungi una riga, un piccolo 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();
}

Quando lo eseguo ora mi dà un errore:

Le coordinate dell'intervallo di destinazione sono al di fuori delle dimensioni del foglio.

che prima non si presentava. Qualcuno ha un'idea del perché lo sta facendo?

Risposte

1 Marios Nov 25 2020 at 18:31

Problema:

L'errore è in questa riga:

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

pasteSheet.getLastRow()restituisce un numero di riga che si trova in fondo al foglio. Quindi consideri l' 12intervallo di righe ma pasteSheetnon ha 12righe dopo l'ultima riga con contenuto.

Soluzioni:

Aggiungi più righe in pasteSheet:

oppure puoi usare insertRowsAfter :

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

Snippet di codice:

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