Olá pessoal, tudo bem?preciso de ajuda com um script que estou fazendo no Apps Script, eu não entendo praticamente nada de linguagem java, estou no começo, então estou pelejando.
Bom, direto ao assunto, estou criando uma planilha de fluxo de caixa, e tenho a intenção de fazer o seguinte, criar um botão onde fecharia o caixa, o processo de coleta de informação já fiz, mas o mais importe é: quero que quando o caixa feche, que a guia daquele dia(no caso tem uma guia para cada dia do mês) não fique mais possível a edição, tentei fazer por proteção de célula, mas o próprio usuário não pode se retirar a permissão de edição, int a melhor opção que achei foi de colocar um Browser.inputBox com uma senha, que aparece quando é feita uma alteração na guia após ela ser fechada, mas o problema é:
a intenção é que caso o usuario clique em cancelar no Browser.inputBox, a alteração seja desfeita, e retorne para como estava antes, MAS AI É QUE ESTÁ, não consegui que voltasse a como era antes,nem apagar, mesmo tentando com o Chatgpt não vai, me ajudem por favor!
Segue o script:
var rangeEditada = null;
var valoresOriginais = null;
function onOpen() {
adicionarTriggerVerificacaoSenha();
}
function adicionarTriggerVerificacaoSenha() {
var planilha = SpreadsheetApp.getActiveSpreadsheet();
ScriptApp.newTrigger("verificarSenha")
.forSpreadsheet(planilha)
.onEdit()
.create();
}
function verificarSenha(e) {
var senhaCorreta = "123";
var usuario = Session.getActiveUser();
var sheet = e.range.getSheet();
if (!sheet.getName().match(/^\d{2}$/)) return; // Sai se a guia não estiver no formato "XX"
var senhaDigitada;
var tentativas = 0;
while (true) {
senhaDigitada = Browser.inputBox('INFORME A SENHA', 'Senha:', Browser.Buttons.OK_CANCEL);
if (senhaDigitada === senhaCorreta) {
break; // Sai do loop se a senha estiver correta
} else if (senhaDigitada === "cancel") {
if (rangeEditada && valoresOriginais) {
rangeEditada.setValues(valoresOriginais);
}
return; // Sai da função sem exibir o Browser.msgBox novamente
}
tentativas++;
if (tentativas > 0) {
Browser.msgBox("Senha incorreta!");
}
}
// Remove o trigger após a primeira execução
ScriptApp.getProjectTriggers().forEach(function(trigger) {
ScriptApp.deleteTrigger(trigger);
});
// Salva a célula editada e seus valores originais
rangeEditada = e.range;
valoresOriginais = e.range.getValues();
}