A cópia do script de dados não está mais funcionando
Tenho usado um script na minha planilha do google que encontrei aqui:
copie dados de uma planilha para outra no google app script e acrescente uma linha, um pequeno 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 estou executando agora, ocorre um erro:
As coordenadas do intervalo alvo estão fora das dimensões da folha.
que não estava acontecendo antes. Alguém tem uma ideia do por que está fazendo isso?
Respostas
Questão:
O erro está nesta linha:
var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,2,12,2);
pasteSheet.getLastRow()
retorna um número de linha que está na parte inferior da planilha. Então, você considera o 12
intervalo de linhas, mas pasteSheet
não possui 12
linhas após a última linha com conteúdo.
Soluções:
Adicione mais linhas no pasteSheet
:

ou você pode 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();
}