Alle Termine vom Google Kalender in Tabelle anzeigen

Hier in diesem Tutorial zeige ich Euch wie Ihr mit Hilfe der Script-Programmierung bei den Google Tabellen auf den Google Kalender zugreifen könnt um diese sogenannten Events also Termine als Liste dort anzuzeigen. Ich habe das ganze auch so programmiert dass man die Event-Farbe dort sehen kann und diesmal auch das Datum von der Uhrzeit separat ausgegeben wird. Ihr könnt das Script natürlich Euren Bedürfnissen entsprechend anpassen



 Wie bekomme ich die Kalender-ID vom Google Kalender?

In diesem Tutorial [Hier klicken] zeige ich Euch wie Ihr auf die Kalender-ID zugreifen könnt und wie Ihr auch einen Testkalender für Eure Versuche erstellen könnt.

Button erstellen

Einen Button für die Funktion könnt Ihr ganz einfach erstellen indem Ihr auf Einfügen – > Zeichnung eine einfache Zeichnung erstellt und nach dem Speichern auf das kleine schwarze Dreieck klickt was in der Zeichnung zu sehen ist. Hier könnt Ihr dem Bild ein Script zuweisen und das muss den gleichen Namen haben wie die Funktion also „AlleMeineTermine“.

Hier das Script zum Kopieren

Wie immer geschieht die Benutzung von meinen Scripten auf eigene Gefahr 😉

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

 

Das Video-Tutorial „Alle Termine vom Google Kalender als Liste“

 



Das könnte Dich auch interessieren

15 Kommentare

  1. Hallo Chris,

    ich habe, da mich obige Funktion für meine Homepage interessiert, den obigen Code eingebunden. Leider funktioniert er nicht, da ich folgende Google Fehlermeldung bekomme: „Autorisierung erforderlich – Unbenanntes Projekt needs your permission to access your Data on Google“.
    Owohl ich die richtige ID benutze, der Kalender für die Öffentlichkeit freigegeben ist und ich die richtigen Anmeldedaten benutze, werden keine Daten angezeigt. Eine Wiederholung bringt die gleiche Meldung usw.

    Eine weitere Frage dazu. Falls es funktionieren sollte, will ich ein Auswahl der Monate ermöglichen, wobei die Anzahl der Tage in der Zukungt liegen soll.
    Ich möchte dazu n Kalender – wie Dinkelhausen, Feuerwehr, TSV u.a. in der Terminliste anzeigen. Unrer Excel 2013 habe ich schon so etwas realisert, aber kann keinen Google Kalender einbinden.

    Ich bin in der VBA Programmierung unter Excel seit 25 Jahren unterwegs, aber wollte mich an das Scripting unter Google Tabellen wagen. Durch Zufall bin ich auf diese Seite gestoßen und bin begeistert. Wenn ich auch noch weiß wie ich die Fehlermeldungen interpretieren soll, ist es wahrscheinlich das Tool für meine Homepage.

    Mfg

    Christoph

    Software:
    – Windows 10 Prof (Build 1709)
    – Firefox 57.0
    – Jimdo

    • Chris sagt:

      Hallo Christoph,
      die Prozedur für die Autorisierung hat sich seit der Erstellung des Tutorials ein bisschen geändert. Wenn sich das Fenster für die Autorisierung öffnet hast Du ganz unten im Fenster jetzt einen Link. Im Deutschen steht dort „Unbenanntes Projekt öffnen (unsicher)“. Wenn Du dort rauf klickst solltest Du die Möglichkeit bekommen den Zugriff auf den Kalender zuzulassen.
      Ich benutze eigentlich immer Chrome als Browser weil ich da auch immer korrekt eingeloggt bin. Mit anderen Browsern habe ich das bisher noch nicht probiert außer wenn ich mal sehen wollte wie eine Tabelle in bestimmten Bereichen vor unberechtigten Zugriffen geschützt ist (also Zugriff ohne Berechtigungen auf dieser Tabelle).
      Wenn Du Dir schon einige Tutorials von mir angeschaut hast wirst Du ja bereits wissen dass ich nur Hobbyprogrammierer bin und kein Profi. Ich müsste mir also auch erst bestimmte Lösungen mühselig erarbeiten.
      Das Script sollte aber eigentlich auch die Daten der Zukunft auslesen können, da Du ja ein Start- und Enddatum eingeben kannst.
      Wenn Du schon viel mit VBA gearbeitet hast und dementsprechend weißt wie man programmiert werden Dir die Möglichkeiten mit der Google Script-Programmierung bestimmt gefallen.
      Schau mal im Scripteditor unter Hilfe und dann API Referenz. Dort findest Du jede Menge Methoden und teilweise auch kleine Beispiele. Da kannst Du Dir schon mal einen kleinen Überblick verschaffen.
      Macht auf jeden Fall viel Spaß wenn man die nötige Zeit dafür hat 😉

      Viele Grüße
      Chris

  2. Dj sagt:

    Hallo Christoph,
    klasse Hilfe. Vielen Dank.
    Hättest Du eine Idee, wie ich folgendes hin bekomme?
    Und zwar würde ich gerne in der Liste noch die Monate anzeigen lassen. Also, die Termine werden ja untereinander angezeigt und ich würde gerne, dass er in der ersten Spalte entweder die Farbe anzeigt und wenn sich ein Monat verändert, in Fett und Schriftgröße 11 der Monatsname.
    So würde dann
    Januar
    Termin
    Termin

    Februar
    Termin
    Termin

    dort stehen.
    Das fände ich super.
    Ich würde mich echt freuen, wenn Du hierzu eine Idee hast. Normal müßte man ja irgendwie den Monat aus dem Starttermin raus bekommen und sagen auch eine Array machen var Monate=[„Januar“,“Februar“,“März“,“April“,“Mai“,“Juni“,“Juli“,“August“,“September“,“Oktober,“November“,“Dezember“];
    Und dann müßte man hingehen und sagen, Wenn Monat sich verändert, zeige einmal Monat an oder so.
    Aber ich hab keine Idee, wie man das machen könnte.

    Ich habe bzgl. der Farben übrigens eine Seite gefunden, die alle ID zu den Kalenderfarben definiert. https://developers.google.com/apps-script/reference/calendar/event-color
    Habe Deinen Code dementsprechend angepasst.
    var bgColors=[„#ffffff“,“#a4bdfc“,“#7ae7bf“,“#bdadff“,“#ff887c“,“#fbd75b“,“#ffb878″,“#46d6db“,“#e1e1e1″,“#5484ed“,“#51b749″,“#dc2127″];
    #fffff weil es ID 0 nicht gibt.

    Lieben Gruss
    DJ

    • Chris sagt:

      Hi DJ, für die Anpassung des Scripts fehlt mir momentan leider die Zeit aber normalerweise dürfte das kein Problem sein. Du hast ja das Startdatum und das Enddatum. Du könntest also das ganze über eine Schleife laufen lassen und anstatt einen größeren Bereich genau nur einen Monat angeben.
      Ich würde das vermutlich in eine eigene Funktion packen und nur das Jahr und den Monat als Parameter übergeben. Das Script was Du dann aufrufst enthält dann nur einen bestimmten Zeitraum und von dort aus wird die andere also große Funktion wie im Beispiel dann eventuell mehrfach aufgerufen. Immer mit anderen Parametern (Jahr und Monat).
      Das mit den Monatsnamen kannst Du dann natürlich auch über ein Array lösen. Wenn Du hier den Monat als Zahl übergibst dann kannst Du Dein Array entsprechend auslesen. Allerdings musst Du dann noch -1 nehmen da die Arrays bei 0 anfangen.
      Das heißt beim Aufrufen der Funktion könntest Du auch schon direkt den Monatsnamen als erstes ausgeben und dann die Liste soweit es Einträge für den Monat gibt.
      Was den Starttermin und Endtermin angeht würde ich vermutlich folgendermaßen vorgehen. Ist jetzt aber nur meine vorgehensweise und es gibt sicher bessere Wege. Ich würde einfach den 1. des Monats nehmen und dann den 1. des übernächsten Monats -1 Tag. Allerdings müsste ich mir da auch erst einmal anschauen wie man das am besten lösen kann. Du weißt ja, wenn Du meine Tutorials gesehen hast, dass ich auch nur ein Anfänger bin und das ganze nur hobbymäßig mache weil es Spaß macht 😉
      Das mit den Farbnummern muss ich mir nochmal anschauen, ist aber ein guter Hinweis. Ich bin mir nicht sicher ob ich das so gewählt habe weil wie gesagt die Arrays bei 0 anfangen und nicht bei 1.
      Das ist vermutlich bei weitem nicht das was Du jetzt als Antwort erwartet hast, aber ich müsste mich auch erst einmal daran setzen und das ganze testen. Ist aber momentan zeitlich etwas schwierig.
      Viele Grüße
      Chris

  3. Marc sagt:

    Hallo Chris,

    vielen Dank für die Tutorials, die sind Top 🙂

    Ich habe mir soweit ein script gebastelt, was an sich funktioniert, ich jedoch noch ein Problem habe.

    In der ersten Tabelle“ ist ein Kalender, dort Frage ich den Tag in einer Zelle ab und gebe dann das Ergebniss was in der Tabell2 gefunden ist aus

    Tabelle 1

    Spalte 1 | Spalte 2
    22/01/2018 | Ergebniss zum Datum aus Tabelle2

    Tabelle 1

    Spalte 1 | Spalte 2
    22/01/2018 | Termin XY

    Formel:
    =ARRAY_CONSTRAIN(ARRAYFORMULA(WENNFEHLER(INDEX(Uebersicht!$K$2:$K$309;KGRÖSSTE((Uebersicht!$J$2:$J$309=C5)*(ZEILE(Uebersicht!$J$2:$J$309)-1);ZÄHLENWENN(Uebersicht!$J$2:$J$309;C5)+1-ZEILE(Uebersicht!$A$1)));““)); 1; 1)

    C5= Das Datum z.b. 22/01/2018

    Das funktioniert auch soweit, aber nur wenn ich es genau so reinscheibe.

    In Tabelle 2 wird in Spalte 1 über google script mit dem Befehl:
    ss.getRange(i+startzeile,9).setValue(events2018[i].getStartTime()).setNumberFormat(„dd/MM/yyyy“);

    Das Datum ausgelesen. Sichtbar wird es auch richtig formatiert, jedoch schreibt er in der Zelle selbst

    22.01.2018 15:00:00

    und somit kann meine Formel den Eintrag nicht mehr finden.

    Kann ich nur das reine Datum irgendwie auslesen? mit get AllDay ist es das gleiche.

    Oder einfach, kannst du mir sagen wie ich die Formel oben so hinbekomme das er z.b. nur nach *22.01.2018* sucht?
    Hab scon alles probiert was ich gefunden habe :/

    • Chris sagt:

      Hast Du denn schon mal versucht auf diese Zelle die den Eintrag bekommt anschließend nur setNumberFormat ohne setValue anzuwenden um die Zelle selbst direkt auf dieses Format zu bringen?
      Wenn es nur am Format liegt sollte es eigentlich funktionieren.

    • Chris sagt:

      Warum Dir jetzt die Uhrzeit mit ausgegeben wird finde ich schon merkwürdig. Habe gerade selbst mal ein paar Sachen getestet aber sobald dort setNumberFormat angegeben wurde ist die Zelle auch entsprechend angezeigt worden (also auch ohne Uhrzeit, selbst wenn vorher eine eingetragen wurde oder über setValue eine gesetzt wurde). Das gleiche habe ich auch nochmal getestet wenn ich die Zellen manuell mit Uhrzeit formatiert habe. nach dem setNumberFormat wird genau das gesetzt was ich auch dort eingegeben habe. Also das nachträgliche setNumberFormat was ich vorhin angesprochen habe ist gar nicht notwendig. Musste ich aber auch erst nochmal testen. Wenn Du Dir die Videos von mir angeschaut hast weißt Du ja dass ich nur ein Hobbyprogrammierer bin 😉
      Wenn Du nur nach dem Datum suchen musst könntest Du das doch auch mit dem SVERWEIS machen (FILTER oder QUERY sollte auch funktionieren). Wenn Du viel mit Daten arbeitest und Daten oft filtern musst schau Dir mal ruhig die Funktion QUERY an. Du wirst begeistert sein.
      https://toptorials.com/funktion-query-wie-sql-google-tabellen/
      https://toptorials.com/importrange-query-kombiniert-google-tabellen/

      • Marc sagt:

        Wie gesagt, er zeigt mir offensichtlich ja nur das Datum an, sobald ich aber auf eine entsprechende Zelle gehe, steht dort das Datum inkl. Uhrzeit.
        Ist das bei dir auch so? 🙂
        Wenn nicht, wie lautet deine script Zeile dazu?

        • Chris sagt:

          Ich kann Dir sagen warum. Musste das aber selbst gerade erst mal wieder rauskramen, da die Datei ja schon was älter war. Du hast dort nicht nur das Datum sondern auch die Uhrzeit mit drin. Klar wusstest Du das schon aber jetzt schau Dir mal das Datum als Zahl an. Ein Tag entspricht intern eine 1 das heißt dass ganze Zahlen einen ganzen Tag entsprechen. Hast Du Uhrzeiten mit drin dann hast Du auch Nachkommastellen und genau diese sind der Grund warum Du Uhrzeiten mit angezeigt bekommst. Formatiere mal eine Zelle mit der Uhrzeit als normale Zahl, dann siehst Du was ich meine. Hier muss man jetzt das ganze noch RUNDEN damit ganze Zahlen heraus kommen.

  4. Bianka sagt:

    Hallo,
    ich bin begeister, vielen lieben Dank, das hilft mir sehr weiter.
    Gerne würde ich noch den Ort mit einfügen.
    Weißt du wie das geht und könntest du mir das zeigen ?
    Vielen lieben Dank

    • Chris sagt:

      Hi Bianka,
      das Script ist schon so aufgebaut dass Du in Spalte „H“ die Adresse angezeigt bekommst sobald im Kalender ein Ort hinzugefügt wird.
      Viele Grüße
      Chris

  5. Bjoern sagt:

    Hey Chris,
    ich bekomme immer wieder die Anzeige „Skript nicht verifiziert“
    Was kann ich machen?

    • Chris sagt:

      Wenn Du das Script das erste mal im Script-Editor startest, bekommst Du eine Meldung (kleines Fenster). Hier musst Du angeben dass dieses Script die Erlaubnis hat auf bestimmte Bereiche zuzugreifen. Welche Bereiche das sind wird Dir ebenfalls dort angezeigt. Leider ist das mit dem Genehmigen in diesem Dialogfenster immer sehr versteckt und ziemlich weit unten, aber in den Tutorials zeige ich den Vorgang meistens. Nachdem Du die Berechtigungen ausgeführt hast werden die Daten geladen.

  6. Benny sagt:

    Hallo,

    bei ganztägigen Terminen wird immer wird immer das Enddatum als Folgetag 0:00 Uhr angegeben.
    Das ist leider sehr verwirrend. Kann man das Script so anpassen, dass es bei dem eigentlichen Tag bleibt und dann vielleicht 23:59 Uhr angibt? Die Uhrzeit muss nicht sein. Wichtig ist jedoch, dass der Endtag auch der tatsächliche Endtag ist.

    Wäre super, wenn das geht.

    Viele Grüße und danke für die tolle bisherige Hilfe!
    Benny

Schreibe einen Kommentar

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