Função Salvar dados Removendo Proteção no inicio do procedimento e colocando a proteção novamente no final.

14/07/2020

0

Olá Pessoal,

Estou quebrando a cabeça num código aqui, eu tenho uma planilha onde tem um formulário na linha 4 onde a gente preenche, e logo após clica no botão salvar, quando a gente clica no botão a planilha insere uma nova linha entre a linha 4 e linha 5, pois é um caixa, então a planilha sempre insere uma nova linha acima, pra poder ser o ultimo registro de cima, porém da linha 5 até a ultima linha eu tenho uma proteção para que o operador não apague nenhuma linha.

Eu to tentando fazer com que o script delete a proteção no começo da macro, para que o colaborador consiga inserir os dados na nova linha, e no final ele insere novamente a proteção automatico protegendo da nova linha 5 até a ultima pra baixo. Note que a linha 5 anterior agora virou a linha 6. O que tá acontecendo é que no usuario do colaborador que é um "Editor" o script até tá inserindo os dados na nova linha 5, porém ele não tá conseguindo deletar a proteção no começo do procedimento e nem recolocar no final do script. O sistema tá apenas adicionando a nova linha 5, deslocando as outras pra baixo e inserindo os novos dados na linha 5, sendo que a mesma ta ficando sem proteção...

Abaixo segue o código:



function salvarDados() {

var caixa1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Caixa 1"); //aba com formulário

RemoveProtection();

var id = caixa1.getRange("A5").getValue();

id = id + 1;

caixa1.getRange("A4").setValue(id);
var data = caixa1.getRange("B4").getValue();
var tipo = caixa1.getRange("C4").getValue();
var categoria = caixa1.getRange("D4").getValue();
var descricao = caixa1.getRange("E4").getValue();
var cliente = caixa1.getRange("F4").getValue();
var produto = caixa1.getRange("G4").getValue();
var caixa = caixa1.getRange("H4").getValue();
var entrada = caixa1.getRange("I4").getValue();
var saida = caixa1.getRange("J4").getValue();

var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('5:5').activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);

caixa1.getRange("A5").setValue(id); //"pega" o conteúdo (data) e transfere
caixa1.getRange("B5").setValue(data); //"pega" o conteúdo (data) e transfere
caixa1.getRange("C5").setValue(tipo); //"pega" o conteúdo (data) e transfere
caixa1.getRange("D5").setValue(categoria); //"pega" o conteúdo (data) e transfere
caixa1.getRange("E5").setValue(descricao); //"pega" o conteúdo (data) e transfere
caixa1.getRange("F5").setValue(cliente); //"pega" o conteúdo (data) e transfere
caixa1.getRange("G5").setValue(produto); //"pega" o conteúdo (data) e transfere
caixa1.getRange("H5").setValue(caixa); //"pega" o conteúdo (data) e transfere
caixa1.getRange("I5").setValue(entrada); //"pega" o conteúdo (data) e transfere
caixa1.getRange("J5").setValue(saida); //"pega" o conteúdo (data) e transfere

caixa1.getRange("B4").clearContent(); //limpa coluna data
caixa1.getRange("C4").clearContent(); //limpa coluna tipo
caixa1.getRange("D4").clearContent(); //limpa coluna tipo
caixa1.getRange("E4").clearContent(); //limpa coluna tipo
caixa1.getRange("F4").clearContent(); //limpa coluna tipo
caixa1.getRange("G4").clearContent(); //limpa coluna tipo

caixa1.getRange("I4").clearContent(); //limpa coluna tipo
caixa1.getRange("J4").clearContent(); //limpa coluna tipo

caixa1.getRange("I1").setValue(saldoLiquido());

AddProtection();

};

function AddProtection() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRange('A5:J');
var protectSs = range.protect().setDescription('Protect');
var me = Session.getEffectiveUser();
protectSs.addEditor(me);
protectSs.removeEditors(protectSs.getEditors());
if (protectSs.canDomainEdit()) {
protectSs.setDomainEdit(false);
}
}

function RemoveProtection() {
// Remove all range protections in the spreadsheet that the user has permission to edit.
var ss = SpreadsheetApp.getActive();
var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
for (var i = 0; i < protections.length; i++) {
var protection = protections[i];
if (protection.canEdit()) {
protection.remove();
}
}

}
Heládio Xerez

Heládio Xerez

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar