Google Sheets-Zeitstempel bei Änderung

Sep 09 2020

Was ich versuche zu erreichen, ist wirklich einfach, aber ich fühle mich mit dem Google Sheet Script Editor sehr unwohl.

Ich möchte, dass das Datum in einer bestimmten Zelle aktualisiert wird, wenn sich auf dem aktiven Blatt etwas ändert.

Das habe ich bisher bekommen:

//Timestamp on change
function timestampOnChange() {
  getActiveCell().setValue(new Date());
}

Selbst das gibt jedoch bereits Fehlermeldungen zurück: /

Antworten

1 Mario Sep 09 2020 at 00:50

Erläuterung:

  • Sie müssen einen onChange () - Trigger für eine bestimmte Funktion erstellen, der eine bestimmte Zelle des aktiven Arbeitsblatts aktualisiert , wenn das Arbeitsblatt den Inhalt oder die Struktur ändert .

  • Die updateCell()Funktion aktualisiert den Wert von B1 mit dem aktuellen Zeitstempel des aktiven Blattes.

  • Ich würde Ihnen raten, ein bestimmtes Blatt anstelle des aktiven Blattes zu aktualisieren , indem Sie Folgendes verwenden:

    const sh = ss.getSheetByName('Sheet1');
    

    Anstatt von:

    const sh = ss.getActiveSheet();
    

Lösung:

  • Im Einzelnen erstellt die createOnChangeTrigger()Funktion den onChange()Auslöser, der ausgeführt wird, updateCell()wenn sich der Inhalt oder die Struktur der Tabellenkalkulationsdatei und in unserem Fall des aktiven Arbeitsblatts ändert.

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

Anleitung:

Kopieren / Einfügen beider Funktionen im Skripteditor und createOnChangeTrigger()nur einmal ausführen .


Verweise:

  • bei Änderung()
Rubén Sep 09 2020 at 02:19

Aus der Frage:

//Timestamp on change
function timestampOnChange() {
  getActiveCell().setValue(new Date());
}

Selbst das gibt jedoch bereits Fehlermeldungen zurück

Der obige Code gibt einen Fehler zurück, da es sich nicht um eine integrierte Google Apps Script-Funktion mit dem Namen handelt getActiveCell(). Um die aktive Zelle zu erhalten, können Sie verwenden

SpreadsheetApp.getCurrentCell()

oder

SpreadsheetApp.getActiveRange()

oder wenn Sie ein Bearbeitungsereignisobjekt verwenden (sagen wir, es ist einem zugewiesen e), können Sie es verwendene.range

Es ist nicht wert, dass, wenn Sie setValue(new Date())in der aktiven Zelle verwenden, alles, was in dieser Zelle eingegeben wurde, überschrieben wird.

In Webanwendungen, einer Schwestersite von Stack Overflow, gibt es viele Fragen und Antworten zu Zeitstempeln in Google Sheets. Tatsächlich gibt es Tags für diese ---> https://webapps.stackexchange.com/questions/tagged/google-sheets-timestamp. Bisher gibt es 102 Fragen mit diesem Tag.