Como salvar dados por cima de outros já salvos no google sheets via script.

27/04/2022

3

Bom dia Mestres!
Tenho um sistema de ponto feito totalmente com o Google Sheets via script.
Nele tem um botão salvar que salva os dados em uma planilha Base. Pois bem, preciso de um script que percorra esta planilha base e, caso encontre algum dado do registro salve os dados novos por cima deles. Segue o script de salvamento:

function SalvarCartao() {

ssp.getRange("J1").setValue(txtSalvando);

var txtRegistro = "''" + ssp.getRange("P4").getValue();
var txtMes = "''" + ssp.getRange("A3").getValue();
var localTrabalho = ssp.getRange(''D6'').getValue();
var enderecoPlanilha = ssp.getRange(''W1'').getValue();

var baseDados = SpreadsheetApp.openById("1dqVGIJLGeqXs8AWwN06Ci-nZWnEqZWp0dKMrGjm1g6o");
var base = SpreadsheetApp.openById(enderecoPlanilha);
let alteracao = base.getSheetByName(localTrabalho); //Guia Alterações do Ponto
let guiarodape = baseDados.getSheetByName("Rodape"); // Guia do Rodapé
let rodape = guiarodape.getRange("A:CG").getValues(); // Dados da Guia do Rodapé

for (var a = 0; a < alteracao.length; a++){ // PROCURAR CARTÃO SALVO
if(alteracao[a][0]==reg && alteracao[a][2]==mes){
var linha = a;
}else{
var linha = alteracao.getLastRow();
}
}
console.log(linha);

//var linha = alteracao.getLastRow();

linha = linha + 1
var linhaFinal = linha+30;
alteracao.getRange("A"+ linha+":A"+linhaFinal).setValue(txtRegistro); // HORÁRIOS DAS ALTERAÇÕES
alteracao.getRange("B"+ linha+":B"+linhaFinal).setValues(ssp.getRange("B12:B42").getValues());
alteracao.getRange("C"+ linha+":C"+linhaFinal).setValue(txtMes);
alteracao.getRange("D"+ linha+":D"+linhaFinal).setValues(ssp.getRange("A12:A42").getValues());
alteracao.getRange("E"+ linha+":N"+linhaFinal).setValues(ssp.getRange("D12:M42").getValues());


ssImprimir.getRange(''A43'').setValue(ssp.getRange(''AN5'').getValue()); // RODAPÉ DA FOLHA DE IMPRESSÃO
ssImprimir.getRange(''E43'').setValue(ssp.getRange(''AO5'').getValue());
ssImprimir.getRange(''I43'').setValue(ssp.getRange(''AP5'').getValue());
ssImprimir.getRange(''M43'').setValue(ssp.getRange(''AQ5'').getValue());
ssImprimir.getRange(''Q43'').setValue(ssp.getRange(''AR5'').getValue());
ssImprimir.getRange(''U43'').setValue(ssp.getRange(''AS5'').getValue());
ssImprimir.getRange(''Y43'').setValue(ssp.getRange(''AT5'').getValue());

for (let r = 2; r < rodape.length; r++){
if(rodape[r][0]==reg){
switch (mes){
case ("OUTUBRO 2021"):
guiarodape.getRange("B"+[r+1]+":H"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("NOVEMBRO 2021"):
guiarodape.getRange("I"+[r+1]+":O"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("DEZEMBRO 2021"):
guiarodape.getRange("P"+[r+1]+":V"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("JANEIRO 2022"):
guiarodape.getRange("W"+[r+1]+":AC"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("FEVEREIRO 2022"):
guiarodape.getRange("AD"+[r+1]+":AJ"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("MARÇO 2022"):
guiarodape.getRange("AK"+[r+1]+":AQ"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("ABRIL 2022"):
guiarodape.getRange("AR"+[r+1]+":AX"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("MAIO 2022"):
guiarodape.getRange("AY"+[r+1]+":BE"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("JUNHO 2022"):
guiarodape.getRange("BF"+[r+1]+":BL"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("JULHO 2022"):
guiarodape.getRange("BM"+[r+1]+":BS"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("AGOSTO 2022"):
guiarodape.getRange("BT"+[r+1]+":BZ"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
case ("SETEMBRO 2022"):
guiarodape.getRange("CA"+[r+1]+":CG"+[r+1]).setValues(ssp.getRange("AN5:AT5").getValues());
break;
}
}
}

ssp.getRange("P4").activate();
ssp.getRange("J1").setValue(txtCartaoSalvo);

IrPara_Imprimir()
}

O trecho em negrito é o que faz a busca e devolve a linha inicial onde estão os dados que devem ser sobrepostos.
Luiz Junior

Luiz Junior

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários,
consulte nossa política de privacidade.

Aceitar