Come posso impostare automaticamente la cella "ultimo aggiornamento" nella riga Fogli di lavoro di Google Documenti?


21

Come posso impostare automaticamente la cella "ultimo aggiornamento" nella riga Fogli di lavoro di Google Documenti?

Voglio creare una colonna in cui il valore delle celle verrà automaticamente impostato su quando l'ultima riga è stata modificata. È possibile? Come faccio a fare questo / quale opzione devo usare per impostarlo?

Vedo una soluzione alternativa per MS Excel ma penso che Google Documenti dovrebbe avere qualcosa di simile, giusto? (dita incrociate)

Abbiamo più persone che modificano un foglio di grandi dimensioni. Possiamo vedere la cronologia delle revisioni, ma sarebbe meglio se avessimo anche una colonna di date "ultimo aggiornamento".


Hai provato? Se funziona, contrassegnalo come tale, vedi webapps.stackexchange.com/faq#howtoask .
Jacob Jan Tuinstra,

Risposte:


20

Puoi provare ad aggiungere uno script di Google Apps da acquisire quando una cella viene modificata e aggiungere un timestamp a un'altra cella. Ecco una risposta precedente simile: Timestamp di Google Spreadsheet?

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);
   };
 };
}

sembra buono lo proverò
Cwd


14

=iferror(A1+B1+C1+D1+J1+K1+L1+"x",today())ogni volta che le celle nella riga cambiano la formula ricalcola. con la "x" nell'equazione garantisce un errore. che in cambio restituisce la data.


5
Questo è un kluge interessante.
Ale

1
La soluzione più bella che abbia mai visto :)
mafonya,

5
Per quanto ne so, in realtà non funziona. Per essere chiari, funziona, ma non è aggiornato per righe specifiche. Quando lo inserisco e lo trascino su più righe, quindi modifico qualsiasi cosa in qualsiasi punto del foglio, tutte le righe vengono ricalcolate e aggiornate.
nhgrif,

1
Wow! Ha funzionato per me. Ecco una versione abbreviata: = iferror (SUM (A2: O2) + "x", oggi ()) e trascinando i numeri di riga aggiornati automaticamente.
Ilya Evdokimov,

1

Questo è il mio script, metti nell'ultima colonna questa informazione:

  1. Inserisci nella cella (nell'ultima cella = ultima colonna per la riga che modifichi) - Data in GMT -3, se vuoi inserire lo stesso in un'altra TZ modifica semplicemente il -3 per il tuo fuso orario simultaneo. Se vuoi inserire automaticamente la data nella TZ predefinita, modifica questa:

    var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    to
    var date = Utilities.formatDate(new Date());
    
  2. Inserisci un commento con Cell + User che lo modifica.

  3. Appare un popup quando si aggiorna qualcosa. Appare solo ad ActiveUser.

    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());
    }
    

1

Ho creato una funzione che scrive una nuova data quando viene modificata la cella di riferimento. In questo caso il valore della cella è VERO o FALSO ma è possibile modificarlo su qualsiasi valore.

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

1

Ecco una versione che trova la colonna utilizzando l'intestazione, anziché codificare il numero di colonna e utilizza un fuso orario personalizzato:

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'});
}

Per utilizzare UTC, basta cambiare il fuso orario in UTC.


-4

Digita semplicemente "Ultimo aggiornamento:" in una cella e digita "= now ()" nella cella accanto ad essa! Questo dovrebbe fare il lavoro!


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.