Registro de data e hora do Planilhas Google na alteração

Sep 09 2020

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

1 Mario Sep 09 2020 at 00:50

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á o onChange()gatilho que será executado updateCell()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()
Rubén Sep 09 2020 at 02:19

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.