Toptorials Tutorials WeblogoLogobild kleinLogobild kleinToptorials Tutorials Weblogo
  • ALLE THEMEN IM ÜBERBLICK
  • YouTube
  • INFOS
    • SITEMAP
    • ÜBER TOPTORIALS
✕
            No results See all results

            Zeitstempel mit Benutzer als Notiz (Google Tabellen) Script

            • Startseite
            • Tutorials Google Google Tabellen
            • Zeitstempel mit Benutzer als Notiz (Google Tabellen) Script

            Zeitstempel mit Benutzer als Notiz (Google Tabellen Script)

            In diesem Tutorial zeige ich Euch wie Ihr mit der GOOGLE TABELLEN Script Programmierung einen Zeitstempel mit Benutzer als Notiz erstellen könnt.
            Das Script ist so aufgebaut dass bei der Änderung einer Zelle automatisch in einer vorher festgelegten Spalte ein Zeitstempel eingetragen wird. Wir tragen es in der Zeile ein wo auch die Änderung durchgefĂŒhrt wurde. ZusĂ€tzlich bekommt die Zelle mit dem neuen Zeitstempel noch eine Notiz von uns. In dieser Notiz schreiben wir die Emailadresse von dem aktuellen Benutzer der Tabelle.

            Ich habe ja bereits ein Tutorial fĂŒr einen normalen Zeitstempel erstellt. Dieses Tutorial ist etwas einfacher gehalten und sieht auch ein bisschen anders aus. Falls Ihr Euch das Script ebenfalls mal anschauen wollt, dann findet Ihr es hier:
            Zeitstempel programmieren in Google Tabellen

            Dort findet Ihr auch noch ein paar Hinweise zum Àndern des Zeitformats.

            Wer jetzt das erste mal ein Google Tabellen Script programmiert, sollte sich zuerst dieses Tutorial hier anschauen:
            Mein erstes Google Tabellen Script programmieren

            Hier das Zeitstempel – Script zum kopieren:

            // Funktion die beim Ändern einer Zelle aufgerufen wird
            function onEdit(e){
            
              // Hier kann die Spaltennummer geÀndert werden A=1, B=2, C=3 ...
              var zeitStempelSpalte=3;
            
              // Aktuelles Tabellendokument
              var tabellenblatt = e.source.getActiveSheet();
              
              // Aktueller Benutzer-Email
              var userEmail = Session.getActiveUser();
              
              // Aktuellen Zeitstempel holen
              var zeitStempel = Utilities.formatDate(new Date(), "GMT+0100", "dd.MM.yyyy HH:mm:ss");
              
              // Aktuelle Zellposition auslesen
              var aktuelleZelle = e.source.getActiveRange();
              
              // Aktuelle Zeile 
              var aktuelleZeile = aktuelleZelle.getRowIndex();
              
              // Auf die Zelle fĂŒr den Eintrag des Zeitstempels zugreifen
              var zeitStempelZelle = tabellenblatt.getRange(aktuelleZeile, zeitStempelSpalte);
              
              // Zeitstempel in die Zelle eintragen und die User-Email als Notiz hinzufĂŒgen.
              zeitStempelZelle.setValue("'" + zeitStempel).setComment(userEmail);  
              
            }

            Beschreibung des Scripts "Zeitstempel mit Benutzer als Notiz"

            Die Funktion onEdit wird automatisch immer aufgerufen sobald eine Zelle verÀndert wird. Hier können wir jetzt unser Script eintragen.

            Als Parameter wird fĂŒr die Funktion onEdit ein Objekt benutzt welches Informationen enthĂ€lt die wir jetzt nutzen können. In meinem Beispiel ist es das kleine e in der Klammer von onEdit.
            e wird hĂ€ufig als AbkĂŒrzung fĂŒr Event benutzt weil es ein Ereignis kennzeichnet. Es wird auch statt dem "e" hĂ€ufig "event" benutzt.

            Hier könnt Ihr natĂŒrlich auch ein anderen Namen benutzen. Achtet aber darauf dass Ihr den dann unten auch ĂŒberall anpassen mĂŒsst.

            Als nÀchsten deklarieren wir ein paar Variablen.

            var zeitStempelSpalte=3;

            Hier könnt Ihr die Spalte bestimmen wo spÀter der Zeitstempel eingetragen werden soll. Wenn ihr also viele Spalten nutzen solltet, dann erhöht die Zahl entsprechend, damit der Zeitstempel weiter rechts eingetragen wird.
            In meinem Beispiel benutze ich die 3. Das bedeutet das der Eintrag in Zeile C vorgenommen wird. Also A=1, B=2, C=3 und so weiter.

            var tabellenblatt = e.source.getActiveSheet();

            Mit e.source.getActiveSheet() greifen wir auf das Tabellenblatt zu welches gerade geĂ€ndert wurde und weisen es der Variablen tabellenblatt zu. Das e ist das Objekt welches wir bei der Funktion oben als Parameter eingetragen haben. Solltet Ihr dort etwas anderes eingetragen haben mĂŒsst Ihr das hier entsprechend anpassen.

             var userEmail = Session.getActiveUser();

            Die Emailadresse vom aktuellen Benutzer können wir mit Session.getActiveUser() auslesen und weisen es der Variablen userEmail zu.

            var zeitStempel = Utilities.formatDate(new Date(), "GMT+0100", "dd.MM.yyyy HH:mm:ss");

            Um einen Zeitstempel in die Zelle zu schreiben mĂŒssen wir erst einmal ein Datum oder sogenannten Zeitstempel zusammen basteln. Das machen wir ĂŒber newDate().
            Wir können das Datumsformat ĂŒber Utilities.formatDate() anpassen. Wir erzeugen also ein neues Datums Objekt mit newDate() und können jetzt auch noch die Zeitzone anpassen. Hier benutze ich fĂŒr unsere Zone "GMT+0100" das bedeutet eine Stunde mehr als die Greenwich Mean Time Zone.

            Im hinteren Teil könnt Ihr Euch das Format so anpassen wie Ihr das möchtet. Hier habe ich bereits beschrieben wie das mit dem Format funktioniert:
            Zeitstempel programmieren in Google Tabellen

            Das ganze wird jetzt der Variablen zeitStempel zugewiesen.

            Die Position fĂŒr den Zeitstempel

            Wir mĂŒssen ja jetzt den Zeitstempel noch irgendwo eintragen. DafĂŒr mĂŒssen wir natĂŒrlich auch erst einmal wissen wo wir uns aktuell befinden. Die Spalte haben wir oben ja schon mit zeitStempelSpalte festgelegt also Spalte 3 (C). Jetzt brauchen wir nur noch die Zeile.

             // Aktuelle Zellposition auslesen
              var aktuelleZelle = e.source.getActiveRange();
              
              // Aktuelle Zeile 
              var aktuelleZeile = aktuelleZelle.getRowIndex();
              
              // Auf die Zelle fĂŒr den Eintrag des Zeitstempels zugreifen
              var zeitStempelZelle = tabellenblatt.getRange(aktuelleZeile, zeitStempelSpalte);
              
              // Zeitstempel in die Zelle eintragen und die User-Email als Notiz hinzufĂŒgen.
              zeitStempelZelle.setValue("'" + zeitStempel).setComment(userEmail);

            e.source.getActiveRange gibt uns die aktuelle Position zurĂŒck. Wir mĂŒssen von dieser Position noch die Spalte auslesen. Das machen wir mit getRowIndex.

            Um jetzt den Zeitstempel einzutragen, mĂŒssen wir die Zelle bestimmen wo das geschehen soll. mit getRange greifen wir genau auf die korrekte Zeile und Spalte zu.

            Ihr seht ja das die Parameter von getRange einmal die Zeile und dann die Spalte ist.

            In diese Zelle die wir jetzt bestimmt haben tragen wir mit setValue() unseren Zeitstempel ein. Der zusĂ€tzliche Aufruf setComment() fĂŒgt dann in die Zelle den Kommentar ein. Als Parameter ĂŒbergeben wir die Variable mit der Emailadresse.

            Das war es auch schon wieder mit dem Tutorial: "Zeitstempel mit Benutzer als Notiz". Anfangs ist es nicht ganz so leicht, aber umso mehr man sich mit dem Thema beschÀftigt umso leichter fÀllt das einen.

            Also nicht aufgeben 😉

            Schaut auch mal nach meiner kleinen Google Tabellen Script Snippets – Sammlung. Ich habe hier einige kleine Scripte geschrieben die Ihr vielleicht fĂŒr Eurer Projekt nutzen könnt.

            Dieses Tutorial ist extra fĂŒr AnfĂ€nger die sich mit dem Tabellenkalkulationsprogramm GOOGLE TABELLEN / SPREADSHEETS noch nicht so viel beschĂ€ftigt haben. Es zeigt die Funktionen und Möglichkeiten Schritt fĂŒr Schritt.

             

            Das könnte Dich auch interessieren

            • Tutorials ĂŒber Google Tabellen
            • Übersichts-Liste der GOOGLE Tabellen Script Tutorials
            • Zeitstempel programmieren in Google Tabellen
            • Google Tabellen Script autorisieren
            • Email Betreff und Nachricht von GMail abrufen Google Tabellen Script
            • Die Sprache in Google Tabellen einstellen
            • Tutorials ĂŒber Google Tabellen Script - Programmierung
            • Übersichts-Liste der Google Tabellen Tutorials

            13 Comments

            1. Matthias sagt:
              14. Januar 2019 um 17:19 Uhr

              Hallo,
              zunĂ€chst vielen Dank fĂŒr das super Tutorial, sehr hilfreich!

              Besteht die Möglichkeit das Script auf einen Tab zu beschrĂ€nken, also dass das Sheet nur in einem Tab ausgefĂŒhrt wird und nicht in allen?

              Beste GrĂŒĂŸe
              Matthias

              Antworten
              • Chris sagt:
                14. Januar 2019 um 18:11 Uhr

                Die Funktion onEdit erhĂ€lt die Daten ĂŒber das e welches in der Funktion oben bei den Parametern eingetragen ist. In diesem e stecken eine Menge Daten. Du kannst dadurch zum Beispiel auch den Tabellenblatt Namen auslesen.
                Das sieht dann in etwa so aus:
                var activeSheet = e.source.getActiveSheet()
                wenn Du jetzt mit activeSheet.getName() den Namen der Tabelle erhĂ€ltst (aktuelles Tabellenblatt wo eine Zelle geĂ€ndert wurde), kannst Du diesen benutzen um ihn ĂŒber eine IF Abfrage mit einem von Dir bestimmten Namen zu vergleichen.
                Die Zeitstempel Script Zeilen packst Du dann in die IF Abfrage zwischen den geschweiften Klammern rein. Das heißt der Zeitstempel wird nur ausgefĂŒhrt wenn die Bedingung erfĂŒllt wurde, also die Tabellennamen ĂŒbereinstimmen.
                Wenn Du das Script im ScriptEditor ausfĂŒhrst kann es zu einem Fehler kommen. Du musst das wirklich mit einer Eingabe testen weil nur dann etwas der Funktion ĂŒbergeben wird.
                Viele GrĂŒĂŸe
                Chris

                Antworten
            2. Melinda sagt:
              21. Januar 2019 um 13:45 Uhr

              Herzlichen Dank fĂŒr das tolle Tutorial!!!

              Hat super geklappt.

              Ich wĂŒrde gerne die LĂ€nge der Spalte fĂŒr die Datumsausgabe Ă€ndern – var zeitStempelSpalte=3;
              Sollte so funktionieren: Nur in "C6:C38" ausgeben.
              Ist getRowIndex() das Problem?

              var aktuelleZeile=aktuelleZelle.getRange("C6:C38"); geht auch nicht

              Habe mich stundenlang bemĂŒht eine Lösung zu finden. Es funzt nichts.

              WÀre toll, wenn du mir helfen möchtest

              Liebe GrĂŒĂŸe,
              Melinda

              Antworten
              • Chris sagt:
                23. Januar 2019 um 20:48 Uhr

                Hallo Melinda,
                wenn Du Deine gesamte Funktion aus dem Beispiel in der onEdit Funktion eingebaut hast, dann wird diese immer komplett ausgefĂŒhrt.
                Damit diese aber nur in bestimmte Zellen ausgefĂŒhrt wird musst Du natĂŒrlich noch etwas anpassen. Da gibt es je nach Wunsch natĂŒrlich verschiedene Lösungsmöglichkeiten.
                Schau Dir mal in diesem Artikel die Kommentare an (meine Antwort auf Raphael). Dort ist ein sehr kurzes Script welches Dir das ganz kurz zeigt wie Du das in der onEdit Funktion lösen könntest.
                Zeitstempel programmieren in Google Tabellen
                Viele GrĂŒĂŸe
                Chris

                Antworten
            3. Rumorhashit sagt:
              11. April 2019 um 8:22 Uhr

              Das Datum + Zeit wird eingetragen, die E-Mail allerdings nicht. Kann es sein, dass nur Google-Mails funktionieren?

              Antworten
              • Chris sagt:
                11. April 2019 um 15:57 Uhr

                Das ist wohl nicht davon abhÀngig sondern von den Sicherheitsrichtlinien. Schau Dir mal den Eintrag unter getActiveUser() an:
                https://developers.google.com/apps-script/reference/base/session

                Antworten
                • Rumorhashit sagt:
                  11. April 2019 um 17:26 Uhr

                  Hallo, ich habe es mit privaten Konten probiert. Lediglich bei einem Konto (Gmail) wurde die E-Mail-Adresse eingetragen. Bei allen anderen nicht (Web.de, GMX ect.). Die Einstellungen in den Google-Konten habe ich ĂŒberall gleich gewĂ€hlt.

                  Antworten
                  • Chris sagt:
                    12. April 2019 um 17:23 Uhr

                    Wenn Du die Tutorials von mir kennst, weißt Du ja dass ich das nur hobbymĂ€ĂŸig mache und kein Profi bin. Ich versuche das gelernte hier zu zeigen und die letzten etwas komplizierteren Tutorials von mir stellen dann auch schon meine Grenzen dar. Wie das jetzt mit den Sicherheitsrichtlinien im Bereich der Emails ist weiß ich deshalb nicht und habe das bisher auch noch nicht mit verschiedenen Emailaccounts getestet.
                    Man könnte jedoch sicher auch das Script so umschreiben dass nur Personen die den Sicherheitsrichtlinien entsprechen (also Ihre Emailadresse preisgeben) die Änderungen vornehmen dĂŒrfen.
                    Gerade wenn es um wichtige Bereiche oder Änderungen geht will man ja vielleicht wissen wer das war. Wie man diese dann allerdings anpassen kann, sodass EintrĂ€ge anschließend möglich sind weiß ich derzeit nicht.
                    Viele GrĂŒĂŸe
                    Chris

                    Antworten
            4. Alicia sagt:
              15. Mai 2019 um 8:45 Uhr

              Hallo,

              ich bin ganz neu in dem Thema und kenne mich bisher wenig aus.
              Ist es möglich, dass das Skript auf ein Tabellenblatt begrenzt wird?
              Und kann man es so einstellen, dass z. B. im Bereich von Spalte A – D ein Zeitstempel eingetragen wird und wenn man beispielsweise in Spalte E – H etwas Ă€ndert dort ein separater Zeitstempel hinterlegt wird, auch wenn etwas in derselben Zeile geĂ€ndert wird? Sozusagen die Spaltenbereiche unabhĂ€ngig voneinander sind?

              Viele GrĂŒĂŸe
              Alicia

              Antworten
              • Chris sagt:
                15. Mai 2019 um 21:46 Uhr

                Ja, das kannst Du alles machen. Du siehst ja in der Funktion onEdit oben den Parameter e. Über diesen kannst Du sehr viele Informationen beziehen.
                Hiermit kannst du dann die Zeile, Spalte und den Tabellennamen auslesen. Über Bedingungen kannst Du dann festlegen dass nur dann ein Zeitstempel gesetzt wird wenn sich die geĂ€nderte Zelle innerhalb Deines gewĂŒnschten Bereichs befindet. Die Bedingungen kannst Du sehr vielschichtig gestalten. Die erste Bedingung wĂ€re zum Beispiel der Tabellenname. Sollte der nicht stimmen kannst Du den gesamten Block inklusive aller Verschachtelungen ĂŒberspringen. Innerhalb des Blocks (also wenn der Tabellenname stimmt) kannst Du dann fĂŒr Zellen und Spaltenbereiche die verschiedensten Bedingungen zum Beispiel mit if Abfragen festlegen.
                Ein kleines Beispiel fĂŒr das Auslesen solch einer Information kannst Du schon mal hier sehen 😉
                function onEdit(e){
                var range = e.range;
                range.setNote('Zuletzt geÀndert: ' + new Date() + "\n"+
                "Zeile: " + e.range.getRow() + "\n"+
                "Spalte: " + e.range.getColumn() + "\n"+
                "Tabellenname: " + e.source.getSheetName() + "\n"+
                "Zelle: " + e.range.getA1Notation() + "\n"+
                "ID: " + e.source.getId());
                }

                Viele GrĂŒĂŸe
                Chris

                Antworten
            5. Markus sagt:
              13. September 2019 um 20:22 Uhr

              Hallo Chris,

              danke erstmal fĂŒr die tollen Tutorials und ErklĂ€rungen. Ich komme eigentlich aus der VBA Richtung und tue mich echt ein bisschen schwer mit dem etwas anderem coding. Ich will eigentlich nur genau das machen, was du oben mit dem Zeitstempel und User gezeigt hast, es sollte aber nur fĂŒr gewisse Tabs (TabellenblĂ€tter) gelten und mir nicht bei jedem Tabellenblatt den Stempel ĂŒberall ins Dokument knallen :(. Dadurch dass es außerdem zwei Parteien geben wird, welche jeweils in einem Tab auf Zeilen-Ebene abarbeiten, brauche ich den Status auch noch an zwei Stellen.

              Etwas leichter und bildlicher dargestellt 🙂 :

              Du gibst in Spalte 1 zb. "STELL MAL DAS BIER KALT !" ein und in Spalte 2 knallt das Skript den Stempel rein. Dann erledigt der andere Kollege (Lagermitarbeiter) die Aufgabe und gibt z.B. in Spalte 4 " BIER IST KALTGESTELLT" ein. In der Spalte 5 (natĂŒrlich in der jeweiligen Zeile) haut das Skript dann den anderen Zeitstempel mit User rein.

              Somit weiß jeder wann das BIER KALT ist bzw. kalt gestellt wurde und alle sind glĂŒcklich:). Dies soll aber nur im Tab "BIER" gelten . Wenn ich in einem anderen Tab in z.B. der 2 oder 4ten Spalte was eingebe passiert nichts.

              WÀre echt mega wenn du mir hiermit helfen könntest.
              ——————————————————————————————————————————————————————-

              Hier nochmal deine ursprĂŒngliche Funktion wie ich sie gerade nutze.

              // Funktion die beim Ändern einer Zelle aufgerufen wird
              function onEdit(e){

              // Hier kann die Spaltennummer geĂ€ndert werden A=1, B=2, C=3 …
              var zeitStempelSpalte=3;

              // Aktuelles Tabellendokument
              var tabellenblatt = e.source.getActiveSheet();

              // Aktueller Benutzer-Email
              var userEmail = Session.getActiveUser();

              // Aktuellen Zeitstempel holen
              var zeitStempel = Utilities.formatDate(new Date(), "GMT+0100", "dd.MM.yyyy HH:mm");

              // Aktuelle Zellposition auslesen
              var aktuelleZelle = e.source.getActiveRange();

              // Aktuelle Zeile
              var aktuelleZeile = aktuelleZelle.getRowIndex();

              // Auf die Zelle fĂŒr den Eintrag des Zeitstempels zugreifen
              var zeitStempelZelle = tabellenblatt.getRange(aktuelleZeile, zeitStempelSpalte);

              // Zeitstempel in die Zelle eintragen und die User-Email als Notiz hinzufĂŒgen.
              zeitStempelZelle.setValue("'" + zeitStempel).setComment(userEmail);

              }

              1000 DANK fĂŒr eine RĂŒckmeldung

              Liebe GrĂŒĂŸe aus MĂŒnchen

              Markus

              Antworten
            6. Taxi Rostock GmbH sagt:
              27. Oktober 2019 um 14:05 Uhr

              Hallo Chris,

              vorab erst mal danke fĂŒr die tollen Tutorials. Super Arbeit. Nun suche ich fĂŒr mein Unternehmen nach einer Abwandlung:

              Variante 1:
              Auf einem zweiten Tabellenblatt (Timestamps) wird jede VerÀnderung, die auf dem ersten Tabellenblatt (Arbeitszeit) vorgenommen wurde mit einem Zeitstempel und einer Notiz (Emailadresse) versehen.

              Variante 2:
              Auf dem Tabellenblatt (Arbeitszeit) wird die letzte Änderung der Zelle samt Emailadresse ALS NOTIZ gespeichert.

              Kannst Du dabei helfen?
              Viele GrĂŒĂŸe aus Rostock
              Colin

              Antworten
            7. Daniel sagt:
              2. Juli 2020 um 20:15 Uhr

              Hallo Chris,

              ich hab auch hierzu eine Frage 🙂

              Ist es möglich, dass man dieses Script, wie du es oben abgebildet hast, erst ab Zeile 11 anwendet?

              Hintergrund:
              In Spalte "G" soll der Zeitstempel eingetragen werden – aber in den Zeilen 1 – 10 stehen in den Spalten A – H Werte, deren Änderung keinen Zeitstempel auslösen sollen.

              Ich danke dir schon jetzt fĂŒr die Antwort 🙂

              MfG
              Daniel

              Antworten

            Schreibe einen Kommentar Antworten abbrechen

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

            Mehr von mir ĂŒber Google Tabellen

            • Übersichts-Liste der Google Tabellen Tutorials
            • Übersichts-Liste der GOOGLE Tabellen Script Tutorials
            • Tutorials ĂŒber Google Tabellen Script – Programmierung
            • Tutorials ĂŒber Google Tabellen
            • Google Tabellen Script Programmierung
            • Google Tabellen Script Programmierung / Snippets
            • Alle meine Videos auf YouTube
            • Tutorial Wunsch Liste

            Neue BeitrÀge

            • REGAUS RegulĂ€re AusdrĂŒcke mit vielen Beispielen mit LibreOffice Calc
            • REGEXREPLACE RegulĂ€re AusdrĂŒcke mit vielen Beispielen mit Google Tabellen
            • REGEXEXTRACT RegulĂ€re AusdrĂŒcke mit vielen Beispielen mit Google Tabellen
            • REGEXMATCH RegulĂ€re AusdrĂŒcke mit vielen Beispielen mit Google Tabellen
            • REGEXERSETZEN RegulĂ€re AusdrĂŒcke mit vielen Beispielen mit Excel 365

            Neue Kommentare

            • Chris bei Eine eigene Funktion erstellen (OpenOffice Calc)
            • osman bei Eine eigene Funktion erstellen (OpenOffice Calc)
            • Erdmann bei Wochentag von einem Datum ausgeben (LibreOffice Calc)
            • Chris bei Tutorial Wunsch Liste
            • Sabine Kniffka bei Tutorial Wunsch Liste

            Schlagwörter

            anfĂ€nger Anleitung anpassen ausrechnen auswahlliste Bedingte Formatierung berechnen Calc Datum Download Dropdownliste einfĂŒgen entfernen erstellen Excel FreeOffice Funktion google hinzufĂŒgen Jahresplan Kalender Lernvideo LibreOffice löschen Makro markieren Microsoft OpenOffice PlanMaker programmierung script spreadsheets Sverweis Tabelle tabellen Tutorial VBA Video Wenn Wenn Funktion Word wps spreadsheets Zeilen Zelle Zellen
            KONTAKT   IMPRESSUM    DATENSCHUTZERKLÄRUNG    HAFTUNGSAUSSCHLUSS (Disclaimer)   © copyright TOPTORIALS