Como definir automaticamente a célula "última atualização" na linha Planilhas do Google Docs?

21

Como definir automaticamente a célula "última atualização" na linha Planilhas do Google Docs?

Eu quero criar uma coluna onde o valor das células será automaticamente definido quando a última linha foi alterada. Isso é possível? Como faço isso / que opção eu uso para definir isso?

Eu vejo uma solução alternativa para o MS Excel, mas acho que o Google Docs deve ter algo semelhante, certo? (dedos cruzados)

Temos várias pessoas editando uma planilha grande. Podemos ver o histórico de revisões, mas seria melhor se tivéssemos também uma coluna com as datas da "última atualização".

cwd
fonte
Você tentou? Se funcionar, marque como tal, consulte webapps.stackexchange.com/faq#howtoask .
Jacob Jan Tuinstra

Respostas:

20

Você pode tentar adicionar um script do Google Apps para capturar quando uma célula é editada e adicionar um carimbo de data / hora a uma célula diferente. Aqui está uma resposta anterior semelhante: Carimbo de data e hora da planilha do Google?

function onEdit() {
 var s = SpreadsheetApp.getActiveSheet();
 if( s.getName() == "Sheet1" ) { //checks that we're on the correct sheet
   var r = s.getActiveCell();
   if( r.getColumn() == 13 ) { //checks the column
     var nextCell = r.offset(0, 1);
     if( nextCell.getValue() === '' ) //is empty?
       var time = new Date();
       time = Utilities.formatDate(time, "GMT", "HH:mm:ss");
       nextCell.setValue(time);
   };
 };
}
OnenOnlyWalter
fonte
Parece bom eu vou dar-lhe uma tentativa
cwd
14

=iferror(A1+B1+C1+D1+J1+K1+L1+"x",today())sempre que as células na linha mudam, a fórmula recalcula. com o "x" na equação, garante um erro. que, em troca, retorna a data.

Robert
fonte
5
Esse é um kluge interessante.
ale
11
A solução mais bonita que eu já vi :)
mafonya
5
Até onde eu sei, isso realmente não funciona. Para ser claro, funciona, mas não é atualizado para linhas específicas. Quando coloco isso e arrasto-o por várias linhas, edito qualquer coisa em qualquer lugar da planilha, todas as linhas são recalculadas e atualizadas.
Nhgrif 18/05/19
11
Uau! Funcionou para mim. Aqui está uma versão abreviada: = iferror (SUM (A2: O2) + "x", today ()) e arrastando os números de linhas atualizados automaticamente.
Ilya Evdokimov
1

Este é o meu script, coloque na última coluna esta informação:

  1. Inserir na célula (na última célula = última coluna da linha que você modifica) - Data em GMT -3, se desejar colocar o mesmo em outra TZ, modifique o -3 para o fuso horário simultâneo. Se você deseja colocar a data automaticamente no seu TZ padrão, apenas modifique isto:

    var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    to
    var date = Utilities.formatDate(new Date());
    
  2. Insira um comentário com o usuário do Cell + que o modifique.

  3. Aparece um pop-up quando você atualiza algo. Aparecer apenas para o usuário ativo.

    function onEdit(event)
    {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var actSht = event.source.getActiveSheet();
        var actRng = event.source.getActiveRange();
    
        var index = actRng.getRowIndex();
        var dateCol = actSht.getLastColumn();
        var lastCell = actSht.getRange(index,dateCol);
        var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    
        lastCell.setValue(date);
        lastCell.setComment("Ultima Modificacion: " + actRng.getA1Notation() +' por '+Session.getActiveUser());
        ss.toast('Ultima Modificacion = '+ actRng.getA1Notation()+' por '+Session.getActiveUser());
    }
    
Matias
fonte
1

Eu criei uma função que escreve uma nova data quando a célula referenciada é modificada. Nesse caso, o valor da célula é VERDADEIRO ou FALSO, mas você pode editá-lo para qualquer valor.

function WhenUpdated(cell1) {
  if(cell1){
    return new Date();
  }
  else return null;
}
Gonzalo
fonte
1

Aqui está uma versão que encontra a coluna usando o cabeçalho, em vez de codificar o número da coluna e usa um fuso horário personalizado:

function updateModified(options) {
  var sheet = SpreadsheetApp.getActiveSheet();
  if (options.sheetName && sheet.getName() != options.sheetName) {
    return;
  }

  var modifiedColumnName = options.modifiedColumnName || 'Modified';
  var header = sheet.getDataRange().offset(0, 0, 1).getValues()[0];
  var modifiedColumn;
  for (var i=0; i < header.length; i++) {
    if (header[i].trim() == modifiedColumnName) {
      modifiedColumn = i + 1;
      break;
    }
  }
  if (typeof modifiedColumn != 'number') {
    throw new Error("Can't find column with name: " + modifiedColumnName);
  }

  var activeCell = sheet.getActiveCell();
  if (activeCell.getColumn() == modifiedColumn) {
    return;
  }

  var modifiedCell = sheet.getRange(activeCell.getRow(), modifiedColumn);
  var formattedDate = Utilities.formatDate(new Date(), "America/Los_Angeles", "M/dd/yy HH:mm");
  modifiedCell.setValue(formattedDate);
}

function onEdit() {
  updateModified({sheetName: 'Jobs'});
}

Para usar o UTC, basta alterar o fuso horário para UTC.

Benjamin Atkin
fonte
-4

Simplesmente digite "Last updated:" em uma célula e digite "= now ()" na célula ao lado! Isso deve fazer o trabalho!

Ye Yaroo
fonte
11
Isso funcionará apenas por célula, não por linha, conforme declarado na pergunta
1owk3y 26/04