Google Sheets-Zeitstempel bei Änderung
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
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 denonChange()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()
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.