Fórum Registrar último preenchimento #622148
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?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)