Registro de data e hora do Planilhas Google na alteração
O que estou tentando alcançar é muito simples, mas estou extremamente desconfortável com o Editor de scripts de planilhas do Google.
Quero que a data em uma determinada célula seja atualizada sempre que algo mudar na planilha ativa.
Isso é o que eu tenho até agora:
//Timestamp on change
function timestampOnChange() {
getActiveCell().setValue(new Date());
}
No entanto, mesmo isso já retorna mensagens de erro: /
Respostas
Explicação:
Você precisa criar um gatilho onChange () de uma função específica que atualizará uma célula específica da planilha ativa quando a planilha mudar de conteúdo ou estrutura .
A
updateCell()função atualiza o valor de B1 com o carimbo de data / hora atual da planilha ativa .Aconselho você a atualizar uma planilha específica em vez da planilha ativa usando:
const sh = ss.getSheetByName('Sheet1');em vez de:
const sh = ss.getActiveSheet();
Solução:
Mais detalhadamente, a
createOnChangeTrigger()função criará oonChange()gatilho que será executadoupdateCell()quando houver uma alteração no conteúdo ou na estrutura do arquivo da planilha e, no nosso caso, da planilha ativa.function createOnChangeTrigger(){ const ss = SpreadsheetApp.getActive(); ScriptApp.newTrigger("updateCell") .forSpreadsheet(ss) .onChange() .create(); } function updateCell(){ const ss = SpreadsheetApp.getActive(); const sh = ss.getActiveSheet(); sh.getRange('B1').setValue(new Date()); }
Instruções:
Copie / cole ambas as funções no editor de script e execute createOnChangeTrigger()apenas uma vez.
Referências:
- em mudança()
Da pergunta:
//Timestamp on change function timestampOnChange() { getActiveCell().setValue(new Date()); }No entanto, mesmo isso já retorna mensagens de erro
O código acima retorna um erro porque não existe uma função integrada do Google Apps Script chamada getActiveCell(). Para obter a célula ativa, você pode usar
SpreadsheetApp.getCurrentCell()
ou
SpreadsheetApp.getActiveRange()
ou se você usar um objeto de evento de edição (digamos que seja atribuído a e), você pode usare.range
Vale a pena notar que, se você usar setValue(new Date())na célula ativa, tudo o que foi inserido nessa célula será sobrescrito.
Em Web Applications, um site irmão do Stack Overflow, há muitas perguntas e respostas sobre carimbos de data / hora no Planilhas Google, na verdade, há uma tag para eles ---> https://webapps.stackexchange.com/questions/tagged/google-sheets-timestamp. Até agora, existem 102 questões com esta tag.