Botão não roda JS no Google Sheets

0 respostas
pauloalecsander

Fala, pessoal. Então… Estou com dificuldades em fazer o botão que enviaria um formulário preenchido para uma planilha no Google Sheets e em seguida zeraria os campos, toda a aplicação está rodando no próprio site. Clicando no botão que deveria realizar a ação de registrar o formulário, ele simplesmente exclui o mesmo. Estou utilizando o javascript abaixo de chamada de tela, ação do botão e inserção dos dados do formulário na planilha, respectivamente:

function Formulario() {
// Declaração de vars
  var Form = HtmlService.createTemplateFromFile("cadprocesso");
  var MostrarForm = Form.evaluate();

// Cria e exibe o formulário de Cad. Processo (620x850)
  MostrarForm.setTitle("Cadastro").setHeight(620).setWidth(850);
  SpreadsheetApp.getUi().showModalDialog(MostrarForm, "Cadastro");
}

Dentro do HTML do formulário declarado como script temos a declaração de variáveis e a função salvar que posteriormente chamaria o script RegistrarProcesso

var CampoProcesso = document.getElementByID("nprocesso");
  var CampoInteressado = document.getElementByID("interessado");
  var CampoDataReceb = document.getElementByID("data_recebimento");
  var CampoDataInic = document.getElementByID("data_analise");
  var CampoAnalista = document.getElementByID("analista");
  var CampoStatus = document.getElementByID("status");
  var CampoSituacao = document.getElementByID("situacao");
  var CampoInfoAux = document.getElementByID("infoauxiliar");
  
  document.getElementByID("salvar").addEventListener("click", Salvar);

  function Salvar(){
    
    var processo = CampoProcesso.value;
    var interessado = CampoInteressado.value;
    var datareceb = CampoDataReceb.value;
    var datainic = CampoDataInic.value;
    var analista = CampoAnalista.value;
    var status = CampoStatus.value;
    var situacao = CampoSituacao.value;
    var infoaux = CampoInfoAux.value;
    var dados = { processo: CampoProcesso.value, interessado: CampoInteressado.value, datareceb: CampoDataReceb.value, datainic: CampoDataInic.value, analista: CampoAnalista.value, status: CampoStatus.value, situacao: CampoSituacao.value, infoaux: CampoInfoAux.value};
    
    google.script.run.RegistrarProcesso(dados);
    
    CampoProcesso.value = "";
    CampoInteressado.value = "";
    CampoDataReceb.value = "";
    CampoDataInic.value = "";
    CampoAnalista.value = "";
    CampoStatus.value = "";
    CampoSituacao.value = "";
    CampoInfoAux.value = "";
    
    M.toast({html: 'Novo tramite cadastrado com sucesso!'});
  }

Que seria este:

function RegistrarProcesso(dados) {
  // Declaração de vars
  var Plan = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CAD. DPGT 2019");
  var Home = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("INÍCIO");

  // Procura a linha para inserir os dados
  Plan.getActiveCell();
  Plan.getRange('A1').activate();
  Plan.getCurrentCell().getNextDataCell(SpreadsheetApp.Direction.DOWN).activate();
  Plan.getActiveCell().offset(1, 0).activate();

  // Insere os dados na linha
  var Linha = Plan.getCurrentCell().getRow();
  Plan.getRange(Linha, 1).setValue([dados.datareceb]);
  Plan.getRange(Linha, 2).setValue([dados.processo]);
  Plan.getRange(Linha, 3).setValue([dados.interessado]);
  Plan.getRange(Linha, 4).setValue([dados.datainic]);
  Plan.getRange(Linha, 5).setValue([dados.analista]);
  Plan.getRange(Linha, 6).setValue([dados.status]);
  Plan.getRange(Linha, 7).setValue([dados.situacao]);
  Plan.getRange(Linha, 8).setValue([dados.infoaux]);
  //Plan.getRange(Linha, 9).setValue([dados.processo]);
  //Plan.getRange(Linha, 10).setValue([dados.processo]);

  Home.getRange('A1').activate();
}

Por fim o HTML do formulário é este:

<style type="text/css">
      html{overflow-y:auto; overflow-x:hidden;}
    </style>
    <div class="container">
     <form>
      <div class="row">
        <div class="input-field col s6">
          <input id="nprocesso" type="text" autocomplete="off" required>
          <label for="nprocesso"> do Processo</label>
    </div>
    <div class="input-field col s6">
      <input id="interessado" type="text" required>
      <label for="interessado">Interessado</label>
    </div>
  </div>
  <div class="row">
    <div class="input-field col s6">
      <input onkeypress="mascara(this, '##/##/####');return event.charCode >= 48 && event.charCode <= 57" id="data_recebimento" type="text" placeholder="Ex.: dd/mm/aaaa" maxlength="10" autocomplete="off" required>
      <label for="data_recebimento">Data de recebimento</label>
      <span class="helper-text" data-error="wrong" data-success="right">Data de recebimento do processo no DMOP</span>
    </div>
    <div class="input-field col s6">
      <input onkeypress="mascara(this, '##/##/####');return event.charCode >= 48 && event.charCode <= 57" id="data_analise" type="text" placeholder="Ex.: dd/mm/aaaa" maxlength="10" autocomplete="off" required>
      <label for="data_analise">Data de início da pré-análise</label>
      <span class="helper-text" data-error="wrong" data-success="right">Data de início da pré-análise pelo técn.</span>
    </div>
  </div>
  <div class="row">
    <div class="input-field col s6">
      <select id="analista" required>
        <option value="" disabled selected>Responsável pela análise</option>
        <option value="1">Técnico 1</option>
        <option value="2">Técnico 2</option>
        <option value="3">Técnico 3</option>
        <option value="4">Técnico 4</option>
      </select>
    </div>
    <div class="input-field col s6">
      <select id="status" required>
        <option value="" disabled selected>Status</option>
        <option value="1">Em Análise</option>
        <option value="2">Fora de Enquadramento</option>
        <option value="3">Deferido</option>
        <option value="4">Indeferido</option>
      </select>
    </div>
  </div>
  <div class="row">
    <div class="input-field col s12">
      <textarea id="situacao" class="materialize-textarea" data-length="120" autocomplete="off" required></textarea>
      <label for="situacao">Situação</label>
    </div>
  </div>
  <div class="row">
    <div class="input-field col s12">
      <textarea id="infoauxiliar" class="materialize-textarea" data-length="120" autocomplete="off"></textarea>
      <label for="infoauxiliar">Informações Auxiliares</label>
    </div>
  </div>
    <div class="input-field col s12">
      <button id="salvar" type="submit" onclick="self.close()" class="btn waves-effect waves-light">Salvar<i class="material-icons right">send</i></button>
      <button id="limpar" type="reset" onclick="self.reset()" class="btn waves-effect waves-light">Limpar<i class="material-icons right">clear_all</i></button>
      <button id="cancelar" type="button" onclick="self.close()" class="btn waves-effect waves-light">Cancelar<i class="material-icons right">cancel</i></button>
    </div>
   </form>
  </div>

Nota¹: Eu estou ainda projetando o que isso seria, então pode ser que vocês encontrem mais de um erro, então desde já, aprecio pela compreensão.

Criado 19 de julho de 2019
Respostas 0
Participantes 1