Registrar último preenchimento

26/03/2024

0

Olá Devs;

Estou com dificuldades para obter um código que registre em determinadas colunas a última data de preenchimento. Ou seja, ao editar uma célula, insira a data de modificação. Abaixo está a última versão de código que tentei, mas ainda não funcionou. Alguém consegue me ajudar?

function onEdit(e) {
  // Verifica se o objeto de evento e está definido
  if (!e || !e.range) {
    console.log("Evento de edição inválido.");
    return;
  }

  // Planilha de origem
  var planilhaOrigem = SpreadsheetApp.openByUrl(Planilha_Origem");
  var abaOrigem = planilhaOrigem.getSheetByName("Casos OnGoing");
  var colunasVerificadas = [''N'', ''O'', ''P'', ''Q'', ''R'', ''S'', ''T'', ''U'', ''V'', ''X'', ''Y'', ''Z'', ''AA'', ''AB'', ''AC'', ''AD'', ''AE''];
  var range = e.range; // Acesso à propriedade ''range'' do objeto de evento ''e''

  // Verifica se a edição foi feita na aba e nas colunas esperadas na planilha de origem
  if (e.source.getSheetName() === abaOrigem.getName() && colunasVerificadas.includes(range.getColumn())) {
    var row = range.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-03:00", "dd/MM/yy");
    abaOrigem.getRange(''A'' + row).setValue(time);

    // Planilha de destino
    var planilhaDestino = SpreadsheetApp.openByUrl("Planilha_Destino");
    var abaDestino = planilhaDestino.getSheetByName("Blasco");
    abaDestino.getRange("AJ" + row).setValue(time);
  } else {
    console.log("Edição fora das células monitoradas.");
  }
}
Rodrigo Santos

Rodrigo Santos

Responder

Posts

03/04/2024

ɐɾǝɹƃi


Sim, posso te ajudar com o código para registrar a última data de preenchimento em determinadas colunas. O código que você forneceu está quase correto, mas há algumas pequenas alterações que precisam ser feitas para que funcione como esperado.

Alterações necessárias:

Verificação de valor antigo: No momento, o código sempre registra a data atual, mesmo que a célula já tenha sido preenchida anteriormente. Para evitar isso, precisamos verificar o valor antigo da célula e registrar a data atual apenas se o valor for diferente.
Adicione o seguinte código antes de definir o valor da célula:

JavaScript

var valorAntigo = abaOrigem.getRange('A' + row).getValue();

if (valorAntigo != time) {
  // Registrar a data atual apenas se o valor for diferente
  abaOrigem.getRange('A' + row).setValue(time);
}
Use o código com cuidado.
Gerenciamento de erros: O código pode falhar se a planilha de destino não existir ou se a coluna "AJ" não estiver presente. Para evitar erros, adicione um tratamento de erros:
JavaScript
try {
  // Abrir planilha de destino e definir valor
  var planilhaDestino = SpreadsheetApp.openByUrl("Planilha_Destino");
  var abaDestino = planilhaDestino.getSheetByName("Blasco");
  abaDestino.getRange("AJ" + row).setValue(time);
} catch (e) {
  // Registrar erro no console
  console.log("Erro ao atualizar planilha de destino: " + e.message);
}


Colunas verificadas: A lista de colunas verificadas está hardcoded no código. Se você precisar adicionar ou remover colunas, precisará editar manualmente o código. Para evitar isso, você pode armazenar a lista de colunas em uma variável separada ou usar um nome de coluna dinâmico.

Código final:

JavaScript

function onEdit(e) {
  // Verifica se o objeto de evento e está definido
  if (!e || !e.range) {
    console.log("Evento de edição inválido.");
    return;
  }

  // Planilha de origem
  var planilhaOrigem = SpreadsheetApp.openByUrl("Planilha_Origem");
  var abaOrigem = planilhaOrigem.getSheetByName("Casos OnGoing");
  var colunasVerificadas = [''N'', ''O'', ''P'', ''Q'', ''R'', ''S'', ''T'', ''U'', ''V'', ''X'', ''Y'', ''Z'', ''AA'', ''AB'', ''AC'', ''AD'', ''AE''];
  var range = e.range; // Acesso à propriedade ''range'' do objeto de evento ''e''

  // Verifica se a edição foi feita na aba e nas colunas esperadas na planilha de origem
  if (e.source.getSheetName() === abaOrigem.getName() && colunasVerificadas.includes(range.getColumn())) {
    var row = range.getRow();
    var time = new Date();
    time = Utilities.formatDate(time, "GMT-03:00", "dd/MM/yy");

    // Verificação de valor antigo
    var valorAntigo = abaOrigem.getRange('A' + row).getValue();

    if (valorAntigo != time) {
      // Registrar a data atual apenas se o valor for diferente
      abaOrigem.getRange('A' + row).setValue(time);
    }

    // Planilha de destino
    try {
      var planilhaDestino = SpreadsheetApp.openByUrl("Planilha_Destino");
      var abaDestino = planilhaDestino.getSheetByName("Blasco");
      abaDestino.getRange("AJ" + row).setValue(time);
    } catch (e) {
      // Registrar erro no console
      console.log("Erro ao atualizar planilha de destino: " + e.message);
    }
  } else {
    console.log("Edição fora das células monitoradas.");
  }
}

Use o código com cuidado.

Observações:

Certifique-se de que as URLs das planilhas "Planilha_Origem" e "Planilha_Destino" estejam corretas.

Se você estiver usando o código em um script vinculado, lembre-se de publicar o script como uma função "onEdit".

Abraços.
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