Zeitstempel programmieren in Google Tabellen

Zeitstempel programmieren in Google Tabellen

Auf dieser Seite zeige ich Euch ein kleines Script mit dem Ihr ganz einfach einen Zeitstempel in Eurer Google Tabelle mit einem Script erzeugen könnt.
Dieses Script wird durch einen Klick auf einen Button aufgerufen und erzeugt dann in der aktuellen Zelle einen Zeitstempel.



Ihr könnt das Script natürlich Euren Bedürfnissen entsprechend anpassen. Im unteren Teil erklärte ich kurz den Aufbau des benutzten Zahlenformats für das Datum.

Weiter unten könnt Ihr Euch das Video – Tutorial entweder hier oder bei YouTube anschauen um zu sehen wie Ihr das mit dem Script genau machen müsst und wie Ihr das in Eurer Tabelle ausführen könnt. Ich zeige Euch dort auch wie Ihr schnell mit dem Zeichnen – Tool einen Button erzeugen könnt mit dem Ihr das Script dann ganz einfach ausführen könnt.

Hier das Zeitstempel – Script zum kopieren:

Die Benutzung des Scriptes ist natürlich wieder auf eigene Gefahr.

Hinweise zum Datumsformat:

Das Datum könnt Ihr übrigens entsprechend Euren Bedürfnissen anpassen. Ihr seht ja das ich in meinem Beispiel Script folgendes Format genommen habe:

dd.mm.yyyy hh:mm:ss

dd
Tag des Monats mit führender 0, also von 01 bis 31.

mm
Monat mit führender 0, also von 01 bis 12.

yyyy
Vierstellige Jahreszahl. Wollt Ihr z.B. nur eine zweistellige Jahreszahl dann gebt statt yyyy einfach nur yy ein.

hh
Stunden mit führender Null, also 00, 01, 02 … 21, 22, 23,.

mm
Minuten mit führender Null, also von 00 bis 59.

ss
Sekunden mit führender Null, also von 00 bis 59.

In dem Beispiel verwende ich, so wie man das ja auch standardmäßig auch macht, Punkte für die Datumsangabe und Doppelpunkte für die Uhrzeit.  Ihr könnt das aber natürlich auch so ändern wie Ihr das haben wollt. In anderen Ländern kann die Reihenfolge z.B. auch völlig anders sein und als Trennzeichen wird da vielleicht statt dem Punkt ein Bindestrich gesetzt.

Viel Spaß dabei 😉

Euch gefällt die Datei und Ihr wollt Euch unbedingt bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] 😉

 



Ähnliche Beiträge:

23 Kommentare

  1. Leif sagt:

    Hallo!

    Ich habe dieses Skript so übernommen, bekomme aber folgenden Fehler:

    Sie haben nicht die erforderliche Berechtigung zum Aufruf von setValue. (Zeile 13).

    Ich wollte folgendes machen:

    = WENN(ISTLEER(G2);;zeitStempel())

    Damit ich einen Zeitstempel erhalten, sobald etwas in die Zelle eingetragen wird.

    Könnten sie mir helfen?

    • Chris sagt:

      Hi Leif, ich denke da muss in der Funktion noch etwas geändert werden wenn das so funktionieren soll. Die letzte Zeile vom Script gibt ja die Werte in der momentan aktiven Zelle aus.
      Wenn man das als Funktion mit einbauen möchte braucht man einen Rückgabewert. Das heißt return "irgendwas";
      Die Zeilen würden im Grunde genommen schon reichen.
      function zeitStempel(){
      var aktuellerZeitpunkt=new Date();
      return aktuellerZeitpunkt;
      }
      Das Format legst Du ja schon direkt in der Tabelle selbst fest also Datum mit Uhrzeit. Ob das jetzt allerdings so funktioniert wie es geplant war weiß ich nicht.
      Noch einfacher geht es natürlich mit:
      = WENN(ISTLEER(A1);;JETZT())

      Viele Grüße
      Chris

      • Florence sagt:

        Das Problem, dass google seinen eigenen Script nicht autorisiert habe ich ebenfalls.
        JETZT() kommt nicht in Frage, da es die vorherigen Daten aktualisiert, was nicht Sinn der Sache ist.
        Wie kann ich einfach das aktuelle Datum einmalig eintragen, ohne dass es aktualisiert wird ?

        Ich befürchte ich werde die Antwort eventuell verpassen, ansonsten habe ich eine Mail 😀
        flo_heyer@gmx.de

        Danke !

        • Chris sagt:

          Das kommt natürlich auch auf das an was Du machen willst und wie das ganze bei Dir aufgebaut ist. Normalerweise hätte ich jetzt auch gesagt, bevor Du dort eine Formel einträgst die nur das aktuelle Datum eintragen würde, kannst Du das Datum natürlich auch gleich manuell dort eintragen, da der Wert sich ja anschließend auch nicht ändert.
          Bei einer Standard Funktion würde sich das vermutlich immer aktualisieren, da fällt mir auch nichts weiter ein. Bei der Programmierung könnte man das eventuell so machen das in der Funktion onOpen (oder anderem Event Typ) auf die eine Zelle zugegriffen wird. Hier wird dann nur über eine IF Abfrage gecheckt ob die Zelle leer ist oder nicht. Ist die Zelle leer wird das aktuelle Datum dort eingetragen. Durch die IF Abfrage dann auch nur einmalig.

  2. Thomas Kaulfuß sagt:

    Super Toptorial – vielen vielen Dank. Kleines Problem: Ich bekomme eine falsche Uhrzeit. Was kann ich da tun? VG Thomas

    • Chris sagt:

      Schau mal ob in
      "Datei" -> "Tabelleneinstellungen" -> Allgemein -> "Zeitzone"
      die richtige Zeit eingestellt ist (GMT+01:00 Berlin)
      Wenn dort alles stimmt kannst Du noch über folgende Funktionen Anpassungen vornehmen:
      setSpreadsheetTimeZone()
      oder über
      Utilities.formatDate(new Date(), "GMT+01:00", "'dd.MM.yyyy'").

  3. Thomas Kaulfuß sagt:

    Perfekt, Du bist ein Engel! – falsche Zeitzone war die Ursache

  4. Pawel sagt:

    Hallo,
    bei mir wurde die Uhrzeit um 3 Stunden später gezeigt.

    Falsch : 2018-01-23 04:19:43
    Aktuell ist : 2018-01-23 01:19:43

    Wie kann ich ändern ?

    Danke im Voraus

  5. Jannis sagt:

    Hi, super Sache.Leider ist die Funktion in der Android app dann nicht mehr verfügbar. Wie kRiege ich die da ans laufen? Grüße, Jannis

  6. Tom sagt:

    Hallo,

    ich habe meine GoogleTabelle mit Open as App verknüpft, um die Tabellen bequem über eine App zu bearbeiten.

    Wäre es möglich, einen Zeitstempel zu erstellen, wenn in ein Feld ein Wert eingetragen wird?!

    Also wenn in C4 ein Wert eingetragen wird soll in D5 das aktuelle Datum und die Uhrzeit automatisch erstellt werden.

    LG Tom

    • Chris sagt:

      Versuche das mal mit dieser Formel:

      function onEdit(e){
      if(e.range.getRow()==4 && e.range.getColumn()==3)
      SpreadsheetApp.getActiveSheet().getRange("D5").setValue("Dein Wert");
      }

      Achte aber darauf dass die Anführungszeichen richtig gesetzt sind. Die werden hier manchmal anders dargestellt.
      Für das Datum hast Du ja sicher schon die Tutorials gefunden 😉

      • Raphael sagt:

        Ich würde gerne das Gleich machen. Muss diese Formel an das Zeitstempel Script angefügt werden? Wenn ja, wo? Habe mal nur folgendes eingetragen.

        function onEdit(e){
        if(e.range.getRow()==4 && e.range.getColumn()==3)
        SpreadsheetApp.getActiveSheet().getRange("D5").setValue("dd.mm.");
        }

        Dann erhalte ich aber folgende Fehlermeldung
        TypeError: Cannot read property "range" from undefined. (line 2, file "Code")

        ich kapier ehrlich gesagt nicht, woher dieses e kommt. Was soll das darstellen?
        Sorry bin kompletter Noobie in Sachen Coding 😉

        • Chris sagt:

          Kein Problem, jeder hat mal angefangen 😉
          Ich bin übrigens auch kein Profi und nur Hobby-Programmierer (sage ich auch in einigen Video-Tutorials extra dazu).
          Ich habe das Script etwas geändert. Es wird dennoch ein Fehler angezeigt, wenn Du das Script im Script Editor ausführst. Es funktioniert aber trotzdem.
          Das hängt damit zusammen dass Du mit dem Editieren in einer Zelle die Funktion onEdit immer automatisch aufrufst und dabei wird diese onEdit-Funktion mit einem Parameter aufgerufen. Dieser Parameter ist eine Art Objekt welches viele Informationen enthält die abgefragt werden können. Wenn Du Dich mit Funktionen beschäftigst, dann wirst Du das schnell feststellen. Du kannst dann andere Funktionen aufrufen und dabei bestimmte Parameter übergeben. Somit kannst Du Daten an Funktionen übermitteln. Der Fehler im Script-Editor tritt auf, weil Du beim Aufrufen über den Script-Editor kein Objekt übermittelst und natürlich das Script keine Zelleninformationen enthält. Das passiert aber wenn Du eine Zelle in der Tabelle editierst.
          Jetzt zum Code:

          function onEdit(e) {
          var sheet = e.source.getActiveSheet();
          var r = e.source.getActiveRange();
          if (r.getRow() == 4 && r.getColumn()==3) {
          sheet.getRange("D5").setValue("Dein Datum");
          }
          }

          Hier wird onEdit sozusagen aufgerufen und auch ein Parameter übergeben. Dieser übergebene Parameter kann jetzt über das e ausgelesen werden. Du kannst übrigens statt dem e auch einen anderen Buchstaben oder ein Wort benutzen. allerdings musst Du den Rest der Funktion dann entsprechend anpassen.
          Das mit dem Datum musst Du ebenfalls noch etwas anpassen.

  7. Frank Hildebrandt sagt:

    Hallo,
    das ist vom Prinzip ein geniales Script … wenn da nicht ein paar kleine Wünsche wären.
    Ich sitze jetzt gut eine Woche daran und verstehe jetzt nichts mehr.
    Mein Wunsch ist es das die Zeit zB in Zelle B2 eingetragen wird. Beim nächsten aktivieren des Buttons in Zelle B3 usw.
    Also das man alle Zeiten untereinander hat und nicht überschreibt. Auf Excel habe ich das so hinbekommen nur hier bin ich Machtlos.

    Und dann noch eine Frage die mit diesem Thema nicht wirklich etwas zu tun hat.
    Kann man die eigene E Mail Adresse auslesen? Besser erklärt gibt es eine Variable die diese automatisch eintragen kann?

    Viele Dank im Voraus!

  8. Daniel sagt:

    Hi

    ich würde gerne mit einem Doppelklick auf eine Zelle das Datum einfügen und wenn da schon was drin steht die Zelle leeren…
    In Excel ist das ja einfach zu lösen:

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub
    Cancel = True
    If Target.Value = "" Then
    Target.Value = Date
    Else
    Target.Value = ""
    End If
    End Sub

    aber ich bin etwas ratlos wie ich das Doppelklick-Event hier ausführen kann…wenn das überhaupt möglich ist.

    Ich würde mich über einen Tipp sehr freuen 😉

    Danke für deine Mühe.

    MfG
    Daniel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.