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?
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
Curtir tópico
+ 0
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
Clique aqui para fazer login e interagir na Comunidade :)