Saudações, o algoritmo se resume a obter dados em linhas, e colunas de uma aba da planilha e transferir para outra aba, mas com algumas exigências, 1° exigência: a primeira coluna da aba de destino deve receber a data o hora do momento de execução sempre atrelado a linha de dados, se não houver dados na linha ela não deve fazer parte da execução. 2° exigência: todas as vezes que for executado o script os dados salvos na aba de destino devem descer (respeitando os dados anteriormente salvos) e saltar 1 linha (ficar visivelmente mais confortável de ler os dados, sempre que salvo novos dados você consiga ver a separação entre as execuções do script) para que os novos dados ocupem o topo da aba. Segue minha trágica tentativa:
function transferirDados() {
// Obtém a planilha ativa
var planilha = SpreadsheetApp.getActiveSpreadsheet();
// Define a aba de origem e a aba de destino
var abaOrigem = planilha.getSheetByName("Saída 1");
var abaDestino = planilha.getSheetByName("Banco Saída 1");
// Define o intervalo de linhas e colunas a serem transferidos
var linhaInicial = 9;
var linhaFinal = 18;
var colunaInicial = 4;
var colunaFinal = 7;
// Percorre as linhas do intervalo
for (var linha = linhaInicial; linha <= linhaFinal; linha++) {
// Verifica se há dados na linha de origem
var dadosLinha = abaOrigem.getRange(linha, colunaInicial, 1, colunaFinal - colunaInicial + 1).getValues()[0];
if (dadosLinha.some(value => value !== '')) { // Verifica se pelo menos um valor não é vazio
// Insere a data e hora na primeira coluna da linha na aba de destino
var dataHora = new Date();
abaDestino.getRange(abaDestino.getLastRow() + 1, 1).setValue(dataHora);
// Transfere os dados da linha para a aba de destino
abaDestino.getRange(abaDestino.getLastRow(), 2, 1, colunaFinal - colunaInicial + 1).setValues([dadosLinha]);
}
}
}