Wie kann ich automatisch die zuletzt aktualisierte Zelle in den Google Text & Tabellen-Tabellen festlegen?

21

Wie kann ich automatisch die "zuletzt aktualisierte" Zelle in der Zeile "Google Text & Tabellen" festlegen?

Ich möchte eine Spalte erstellen, in der der Wert der Zellen automatisch auf den Zeitpunkt gesetzt wird, an dem diese Zeile zuletzt geändert wurde. Ist das möglich? Wie mache ich das / welche Option verwende ich, um dies einzustellen?

Ich sehe eine Problemumgehung für MS Excel, aber ich denke, Google Docs sollte etwas Ähnliches haben, oder? (Daumen drücken)

Wir haben mehrere Personen, die ein großes Blatt bearbeiten. Wir können den Revisionsverlauf sehen, aber es wäre schöner, wenn wir auch eine Spalte mit "zuletzt aktualisierten" Daten hätten.

cwd
quelle
Hast du es versucht? Wenn es funktioniert, markieren Sie es bitte als solches unter webapps.stackexchange.com/faq#howtoask .
Jacob Jan Tuinstra

Antworten:

20

Sie können versuchen, ein Google Apps-Skript hinzuzufügen, das erfasst werden soll, wenn eine Zelle bearbeitet wird, und einer anderen Zelle einen Zeitstempel hinzufügen. Hier ist eine frühere Antwort, die ähnlich ist: Google Spreadsheet Timestamp?

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
quelle
sieht gut aus, ich werde es versuchen
CWD
14

=iferror(A1+B1+C1+D1+J1+K1+L1+"x",today())Wenn sich die Zellen in der Zeile ändern, wird die Formel neu berechnet. Mit dem "x" in der Gleichung wird ein Fehler garantiert. was im Gegenzug das Datum zurückgibt.

Robert
quelle
5
Das ist eine interessante Sache.
Ale
1
Die schönste Lösung, die ich je gesehen habe :)
Mafonya
5
Soweit ich das beurteilen kann, funktioniert das nicht wirklich. Klar, es funktioniert, aber es wird nicht für bestimmte Zeilen aktualisiert. Wenn ich dies einfüge und durch mehrere Zeilen ziehe und dann irgendwo auf dem Blatt bearbeite, werden alle Zeilen neu berechnet und aktualisiert.
nhgrif
1
Wow! Es hat bei mir funktioniert. Hier ist eine gekürzte Version: = iferror (SUM (A2: O2) + "x", today ()) und ziehen Sie es automatisch aktualisierte Zeilennummern.
Ilya Evdokimov
1

Dies ist mein Skript, in die letzte Spalte diese Information eintragen:

  1. In die Zelle einfügen (in der letzten Zelle = letzte Spalte für die Zeile, die Sie ändern) - Datum in GMT -3, wenn Sie dasselbe in eine andere TZ einfügen möchten, ändern Sie einfach die -3 für Ihre gleichzeitige Zeitzone. Wenn Sie das Datum automatisch in Ihre Standard-TZ einfügen möchten, ändern Sie dies einfach:

    var date = Utilities.formatDate(new Date(), "GMT-3", "dd/MM/yyyy HH:mm");
    to
    var date = Utilities.formatDate(new Date());
    
  2. Fügen Sie einen Kommentar mit dem Cell + User ein, der ihn ändert.

  3. Erscheinen Sie ein Popup, wenn Sie etwas aktualisieren. Erscheint nur dem 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());
    }
    
Matias
quelle
1

Ich habe eine Funktion erstellt, die ein neues Datum schreibt, wenn die referenzierte Zelle geändert wird. In diesem Fall ist der Zellenwert TRUE oder FALSE, Sie können ihn jedoch in einen beliebigen Wert ändern.

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

Hier ist eine Version, die die Spalte anhand des Headers findet, anstatt die Spaltennummer fest zu codieren, und eine benutzerdefinierte Zeitzone verwendet:

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

Um UTC zu verwenden, ändern Sie einfach die Zeitzone in UTC.

Benjamin Atkin
quelle
-4

Geben Sie einfach "Zuletzt aktualisiert:" in eine Zelle ein und "= now ()" in die Zelle daneben! Das sollte den Job machen!

Ye Yaroo
quelle
1
Dies funktioniert nur pro Zelle, nicht pro Zeile, wie in der Frage angegeben
1owk3y