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