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
function AlleMeineTermine(){ var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AlleMeineTermine"); var now=new Date(); // Startzeit var startZeitpunkt=new Date(ss.getRange("B1").getValue()); // Endzeit var endZeitpunkt=new Date(ss.getRange("B2").getValue()); var events=CalendarApp.getCalendarById("32sfep7arna6opratj1i6lk5is@group.calendar.google.com").getEvents(startZeitpunkt, endZeitpunkt); var startZeile=5; var bgColors=["#5484ED","#A4BDFC","#46D6DB","#7AE7BF","#51B749","#FBD75B","#FFB878","#FF887C","#DC2127","#DBADFF","#E1E1E1"]; ss.getRange(("A"+startZeile)+(":H"+ss.getLastRow()+1)).setValue("").setBackground(""); if(events.length>0){ for (var i=0;i<events.length;i++) { ss.getRange(i+startZeile,1).setBackground(bgColors[events[i].getColor()]); ss.getRange(i+startZeile,2 ).setValue(events[i].getTitle()); ss.getRange(i+startZeile,3).setValue(events[i].getDescription()); ss.getRange(i+startZeile,4).setValue(events[i].getStartTime()).setNumberFormat("dd.MM.yyyy"); ss.getRange(i+startZeile,5).setValue(events[i].getStartTime()).setNumberFormat("hh:mm:ss"); ss.getRange(i+startZeile,6).setValue(events[i].getEndTime()).setNumberFormat("dd.MM.yyyy"); ss.getRange(i+startZeile,7).setValue(events[i].getEndTime()).setNumberFormat("hh:mm:ss"); ss.getRange(i+startZeile,8).setValue(events[i].getLocation()); } }else{ ss.getRange(startZeile,2).setValue("Keine EintrÀge gefunden"); } }
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"
50 Comments
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
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
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
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
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 :/
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.
Ne, wie mĂŒsste die Formel dann aussen?
ss.getRange(i+startzeile,9).setNumberFormat("dd/MM/yyyy");(events2018[i].getEndTime()). ?
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/
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?
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.
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
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
Hey Chris,
ich bekomme immer wieder die Anzeige "Skript nicht verifiziert"
Was kann ich machen?
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.
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
Hallo Chris !
Ich bin sehr interessiert an der Möglichkeit, den Google Kalender auszulesen und in
meine Excel – Tabelle einzubauen.
Leider habe ich ein grundsĂ€tzliches Problem, dass deine Scripts (da Java – Script)
in meinem Standard – Excel (2016) nicht laufen.
Offensichtlich benötige ich irgendeine Art von Plugin, Erweiterung etc.
Könntest Du mir da bitte behilflich sein, eine Google Suche hat mir nicht wirklich weiter
geholfen.
cu Thomas
Hallo Thomas, ich habe jetzt auf den anderen Kommentar von Dir geantwortet:
https://toptorials.com/google-kalender-mit-tabelle-verbinden/
Die Kombination von Google Kalender und Excel habe ich selbst noch gar nicht ausprobiert.
Was ich aber gerade gesehen habe ist, dass Du den Google Kalender in Outlook integrieren kannst:
Google Kalender in Outlook anzeigen
Ich vermute von dort aus lÀsst sich dann bestimmt auch das eine oder andere noch in VBA programmieren.
Viele GrĂŒĂe
Chris
Hallo Chris, das ist ein super Tutorial. Genau das, was ich gesucht habe. Nur stoĂe ich auf ein Problem, das ich selber – mangels Kenntnisse – nicht lösen kann: bei ganztĂ€gigen Terminen wird das Enddatum mit dem nĂ€chsten Tag angegeben, sprich wenn ein Termin von 3.-5.12.18 dauert und als ganztĂ€giges Ereignis im Google-Kalender eingetragen ist, erhalte ich in der Tabelle als Startdatum 3.12.18 und als Enddatum 6.12.18. Gibt es dafĂŒr eine einfache Lösung? Danke!
Hallo Marion,
ich habe mir das Script gerade nochmal angeschaut und es ist so aufgebaut das die Daten direkt vom Kalender bezogen werden. Das Script selbst Ă€ndert keine Daten. Normalerweise mĂŒsste es auf Deinem Kalender eigentlich dann genauso aussehen.
events[i].getStartTime()).setNumberFormat("dd.MM.yyyy");
events[i].getStartTime()).setNumberFormat("hh:mm:ss");
events[i].getEndTime()).setNumberFormat("dd.MM.yyyy");
events[i].getEndTime()).setNumberFormat("hh:mm:ss");
Diese Funktionen holen die Daten direkt ab und Ă€ndern dabei nur das Format (Tag, Monat, Jahr / Stunde, Minute, Sekunde) damit es in verschiedenen Zellen steht. Dabei werden aber keine Ănderungen des Datums oder der Zeit vorgenommen.
Viele GrĂŒĂe
Chris
Hallo Chris,
vielen Dank fĂŒr deine schnelle Antwort. Ich hatte wohl vermutet, dass meine erste Frage nicht weggegangen ist, daher meine zweite Nachricht… đ
Ich habe das Script, das ich verwende, nochmals kontrolliert. Und es ist genau so, wie du es geschrieben hast. E scheint so zu sein, dass bei ganztĂ€gigen Terminen der letzte Tag um 24:00 Uhr aufhört und dies beim Auslesen als 0:00 des Folgetages gewertet wird. Siehst du eine Möglichkeit, wie man das im Script lösen könnte? Nachdem ich in dem betreffenden Kalender nur Ganztagestermine drinnen habe, wĂ€re es auch denkbar, dies im Skript so zu lösen, dass man am Endtag einfach einen Tag abzieht. HĂ€ttest du eventuell dafĂŒr eine Idee? Vielen, vielen Dank nochmals! Bin ganz begeistert, dass ich auf diese Seite gestoĂen bin.
Marion
Hallo Marion,
leider fehlt mir dafĂŒr die Zeit mich nĂ€her damit zu beschĂ€ftigen weil das auch sehr speziell ist. Ich habe mir gerade angeschaut wie die Daten aussehen die ĂŒber den Kalender verschickt werden. Die sehen in etwa so aus:
[18-12-22 12:56:05:497 CET] Sat Nov 20 09:30:00 GMT+01:00 1999
Bei mir in der Tabelle werden auch ganztÀgige Termine in nur einer Zeile angezeigt.
Eventuell kannst Du Dir aber auch schon damit helfen wenn Du ganztĂ€gige Termine ĂŒber die bedingte Formatierung markierst.
Die Formel könnte dann in etwa so aussehen:
=WENN(UND(VERKETTEN(STUNDE($E5);minute($E5);SEKUNDE($E5))=VERKETTEN(STUNDE($G5);minute($G5);SEKUNDE($G5));ISTZAHL($G5));1;0)
Es werden alle Termine gekennzeichnet wo die Stunden, Minuten und Sekunden gleich sind. Das heiĂt einmal die ganztĂ€gigen Termine und Termine wo die Anfangs und Endzeit gleich sind.
Wichtig ist den ganzen Bereich zu markieren der die bedingte Formatierung erhalten soll.
Viele GrĂŒĂe und schöne Feiertage
Chris
Hallo Chris,
vielen Dank jedenfalls, dass du dich nochmals in mein Problem hineingedacht hast, und fĂŒr die Anregungen einer möglichen Lösung. Ich werde mich damit ein wenig spielen. Danke auch nochmals fĂŒr die tolle Seite. Ebenfalls schöne Feiertage!
Marion
Hallo Marion, ja versuche das mal. Vielleicht findest Du ja noch eine ganz andere Lösung fĂŒr dieses Problem. Wenn ja, wĂŒrde ich mich natĂŒrlich ĂŒber Feedback freuen.
Viele GrĂŒĂe
Chris
Hallo Chris, vielen Dank fĂŒr die tolle Anleitung. Habe es auch auf Anhieb geschafft. Was mir auffĂ€llt und wofĂŒr ich keine Lösung finde, ist folgendes Problem: bei ganztĂ€gigen Terminen wird das Enddatum mit dem Tag nachher bezeichnet: also zum Beispiel bei einem ganztĂ€gigen Event, das am 20.12.18 endet, wird der 21.12.18 ausgelesen. Gibt es eine einfache Möglichkeit, das anders zu machen? Danke und GrĂŒĂe! Marion
Hi Marion,
ich habe gerade auf Deinen anderen Kommentar geantwortet. Beim ersten Mal muss ich einen Kommentar erst freischalten bevor er hier gezeigt wird. Da ich an sehr vielen Projekten arbeite kann die Antwort schon mal etwas lĂ€nger dauern đ
Viele GrĂŒĂe
Chris
Hallo Chris,
finde deine Videos super !!!
Wollte das Script ĂŒbernehmen, aber er spuckt mir immer einen Fehler raus :
TypeError: Methode "getEvents" von null kann nicht aufgerufen werden. (Zeile 13, Datei "Code")
Was kann ich tun ?
Liebe GrĂŒĂe
Mercedes
ĂberprĂŒfe bitte nochmal die Kalender ID. Ich gehe stark davon aus dass diese nicht richtig geschrieben wurde oder gar nicht existiert.
var events=CalendarApp.getCalendarById("2sfep7arna6opratj1i6lk5is@group.calendar.google.com").getEvents(startZeitpunkt, endZeitpunkt);
Hier musst Du Deine eigene Kalender ID eintragen. Die findest Du wie im Video beschrieben.
Schöne Feiertage đ
Viele GrĂŒĂe
Chris
GrĂŒsse.
ich hab mal ne frage zu den Eventfarben. wo kann ich die denn im google Kalender einstellen ?
Mit freundlichen GrĂŒĂen und schöne Weihnachten
Wenn Du einen Termin eintrÀgst dann siehst Du unten den Punkt "Weitere Optionen".
Wenn Du dort rauf geklickt hast, dann erscheint auf der linken Seite die Möglichkeit der Farbanpassung rechts neben der Auswahl in welchen Kalender der Termin eingetragen werden soll (unter dem Punkt Benachrichtigung hinzufĂŒgen).
Viele GrĂŒĂe und schöne Feiertage fĂŒr Dich
Chris
Danke Danke ich wĂŒnsch das selbe.
Also ich hab jetzt alles Probiert was an Farben verfĂŒgbar ist , neue Termine erstellt mit unterschiedlichen Farben.
aber es wird keine Farbe im Farbfeld angezeigt
Dann habe ich Dich vermutlich falsch verstanden. Also im Kalender werden diese Ereignisse entsprechend den Farben bei mir angezeigt.
Du kannst diese ĂŒbrigens auch mit der rechten Maustaste direkt anklicken und die Farbe auswĂ€hlen.
Im Script selbst kannst Du die Farben ebenfalls Ă€ndern. Allerdings musst Du dann schauen welche EintrĂ€ge Du dafĂŒr genau nehmen musst weil das fĂŒr viele etwas schwer nachzuvollziehen ist.
Um das zu vereinfachen kannst Du mal hier schauen:
https://html-color-codes.info/webfarben_hexcodes/
Hallo Chris,
ich hatte dich im April 2017 schon mal kontaktiert bzgl. der Möglichkeit, dieses Script dahingehend zu erweitern, dass daraus eine JahresĂŒbersicht wird.
Zitat: "Hi Erich, klar kannst Du das auch per Copy & Paste machen aber ich hatte eine Anfrage bekommen wie man halt Tabelle und Kalender verbinden kann. So ist dann halt dieses Tutorial entstanden.
Ich denke mit der Script-Programmierung kann man schon eine ganze Menge bewerkstelligen. Das mit der JahresĂŒbersicht ist eine interessante Idee. Ich schreibe mir das gleich mal auf die TODO – Liste und versuche ein Tutorial daraus zu machen. Ich denke das könnte sicher mehrere hier interessieren. Wird aber etwas…"
Leider sind meine Scriptkenntnisse nicht ausreichend, um so etwas selbst zu realisieren, zumindest nicht in vollem Umfang. Jetzt bin ich gerade zufĂ€llig wieder darauf gestoĂen und wollte mal fragen, ob du Zeit hattest, dich mal nĂ€her damit zu befassen. Im Google-Kalender gibt es ja eine MonatsĂŒbersicht, die zwar schon etwas in diese Richtung tendiert, aber immer noch zu unĂŒbersichtlich ist. Was in deinem Script auch nicht vorhanden ist, wenn ich es richtig verstehe, ist die Option, Termine aus mehreren (freigegebenen) Kalendern in eine Tabelle zu ĂŒbernehmen. Mir wĂŒrde dazu auch nur die Kalenderfarbe genĂŒgen und eine Darstellung analog zu der Google-MonatsĂŒbersicht eine JahresĂŒbersicht mit sechs Zeilen Ă zwei Monaten.
Hallo Erich,
bisher bin ich noch nicht dazu gekommen und es sieht auch sehr schwierig aus. Seit Anfang des Jahres hat sich die Anzahl der Anfragen (mehrere Webseiten und YouTube Channels) extrem erhöht. Wenn Du auf meinen YouTube Kanal schaust dann siehst Du ein Video was es ein wenig erklÀrt:
Bitte um VerstÀndnis
Wenn Du mehrere Kalender abfragen möchtest um diese in die Tabelle zu bekommen musst Du diese auch separat ansprechen da jeder Kalender seine eigene ID hat.
Du könntest dieses Script eigentlich 2 mal benutzen oder öfters.
Meine Idee dazu wĂ€re folgende. Du kannst fĂŒr jeden Kalender eine eigene Tabelle erstellen. Du musst im Script nur den Namen der Tabellen entsprechend anpassen. Also anstatt "AlleMeineTermine" benutz Du zum Beispiel fĂŒr jede Tabelle den Namen des Kalenders. Du hast also jetzt 2 Scripte und 2 Tabellen wo jedes Script auf einen anderen Kalender und auf eine andere Tabelle zugreift. Damit hast Du erst einmal schon eine eigene Ăbersicht fĂŒr jeden Kalender.
Als nÀchstes erstellst Du Dir eine Tabelle Namens Jahreskalender oder AlleKalender oder was Du bevorzugst.
AnschlieĂend könntest Du Dir untereinander in diesem Jahreskalender die Tage eintragen. Also fĂŒr mein Beispiel in Zelle B1 01.01.2018, Zelle B2 02.01.2018 und so weiter.
Jetzt kannst Du ĂŒber Vergleich und Index die Kalender abfragen. Dazu könntest Du Dir fĂŒr jede Spalte rechts neben dem Datum einen Kalender aussuchen. Der erste Kalender steht dann in Spalte C der zweite Kalender in Spalte D und Du könntest noch sehr viel mehr Kalender dort einbauen. Als Formel kannst Du dann zum Beispiel so etwas benutzen:
=WENN(ISTZAHL(VERGLEICH(B1;AlleMeineTermine!D:D;0));INDEX(AlleMeineTermine!C:C;(VERGLEICH(B1;AlleMeineTermine!D:D;0)));"")
Die Formel kopierst Du Dir ganz oben in Zelle C1 und kopierst diese dann nach unten. Sollten Deine Datumsangaben woanders sein musst Du die Formel natĂŒrlich noch anpassen.
Ich verwende hier noch den alten Kalendernamen. Du musst Deine eigenen Namen fĂŒr jede Spalte benutzen.
Das sollte funktionieren.
Viele GrĂŒĂe
Chris
Hallo Chris,
vielen Dank fĂŒr die schnelle Antwort!
Ich hatte schon vermutet, dass die verschiedenen Kalender wegen der unterschiedlichen IDÂŽs einzeln abgefragt werden mĂŒssen. Ich hatte es mir mit meinem laienhaften Wissen halt so vorgestellt, dass man die Kalender vielleicht mit einer for-Schleife nacheinander abfragen könnte.
Es wÀre aber auch kein Problem, mehrere Makros mit den jeweiligen IDŽs zu erstellen und sie dann einzeln zu starten.
Mehrere Tabellen brauche ich m. E. nicht, da ich die jeweiligen Kalendertermine in eigene Zeilen/Zellen eintragen möchte, die ich vorher mit Namen versehen habe.
Ich möchte auch nicht die Termindaten (Datum, Uhrzeit) von Start und Ende ĂŒbernehmen, sondern diese Werte (nur Datum) zum EinfĂ€rben von den entsprechenden Zellen in der Farbe des Kalenders verwenden.
Beispiel:
Ein Termin im Kalender A (Farbe blau) beginnt am 5.1.2019 und endet am 16.1.2019.
In der Tabelle gibt es mehrere Zeilen fĂŒr je einen Kalender. In jeder Zeile steht in der ersten Spalte der Kalendername und in die folgenden Zellen in dieser Zeile sind die einzelnen Zellen mit "KalenderA_0101 KalenderA_0201" usw fĂŒr einen bzw. zwei Monate benannt.
Nun soll das Makro also die Zellen "KalenderA_0501" bis "KalenderA_1601" in der Kalenderfarbe einfÀrben.
Leider weiĂ ich nicht, ob so etwas ĂŒberhaupt möglich ist und wenn ja, schon garnicht wie.
Vielleicht kannst du mir da helfen?
Hallo Erich,
in der Funktion selbst liest Du mit der Zeile:
var events=CalendarApp.getCalendarById("DEINE_KALENDER_ID").getEvents(startZeitpunkt, endZeitpunkt);
schon alle Daten aus, dass heiĂt hier stecken schon alle Daten in dem Array "events". Eine Schleife benötigst Du nur fĂŒr das eintragen in den Kalender.
Da aber schon alle EintrĂ€ge in einem Array stehen und die GröĂe des Arrays ĂŒber events.length bestimmt werden kann benötigst Du keine weitere Schleife sondern rufst jeden Kalender nur einmal mit so einer Zeile ab.
Du kannst natĂŒrlich auch fĂŒr jedes Datum auf den Kalender zugreifen und abfragen aber das wĂ€re ein Performance-Killer.
Mit einem Makro wirst Du da nicht weit kommen es sei denn Du wĂŒrdest dass Makro anschlieĂend weiter im Script bearbeiten.
Leider fehlt mir die Zeit mich nĂ€her damit zu beschĂ€ftigen zumal das auch sehr speziell ist. Du hast ja jetzt sicher das Video gesehen đ
1 Kommentar mit dem selben Inhalt reicht ĂŒbrigens. Ich habe die anderen beiden jetzt entfernt.
Viele GrĂŒĂe
Chris
Hallo Chris,
sorry, wenn ich dich jetzt nochmal belĂ€stige aber nachdem ich mir die Funktion nochmal genau durch den Kopf gehen lieĂ, habe ich endlich begriffen, dass sie nur Termine aus einer Kalender-ID in ein bestimmtes Tabellenblatt schreiben kann und zwar zeilenweise untereinander.
WĂŒrde das auch spaltenweise gehen mit einem ZĂ€hler oder irgendwas, das die terminfreien Tage als leere Zellen ĂŒberspringt oder konkret anhand eines ĂŒbergebenen Wertes (Datum) eine bestimmte Zelle anspringt, die dem Datum entspricht?
So, das warÂŽs jetzt.
Die dreifache Eingabe kam ĂŒbrigens daher, dass mein Browser meine Antwort auch nach mehrmaligem Aktualisieren der Seite nicht angezeigt hatte. Da dachte ich, irgendwas hĂ€tte nicht funktioniert.
Du kannst die Daten auch nebeneinander ausgeben. DafĂŒr musst Du nur die EintrĂ€ge von getRange vertauschen. Ich wĂŒrde Dir dennoch weiterhin empfehlen die Daten in einer separaten Tabelle abzurufen und dann ĂŒber vergleich und Index das ganze aus dieser Tabelle zu holen. Der andere Weg wĂ€re etwas komplizierter, weil Du den Bereich wo die Daten eingetragen werden sollen ebenfalls als Array auslesen mĂŒsstest (Datumsbereich), anschlieĂend dieses Array durchlaufen und dabei das Array mit den Kalenderdaten vergleichen mĂŒsstest und die Ăbereinstimmungen dann an der richtigen Position ausgeben.
Das mit dem Script ist natĂŒrlich eine gute Möglichkeit fĂŒr Dich weiter in die Materie einzusteigen und vielleicht sogar mehrere Kalender sowie Termine herauszuziehen und in die Tabelle korrekt einzutragen. Die Schleife wird dann das Array mit dem Datumsbereich der Zieltabelle sein und die anderen Arrays der verschiedenen Kalender werden dann verglichen. Jeder Durchlauf wird gezĂ€hlt und bestimmt damit auch die Position fĂŒr den korrekten Eintrag.
Viele GrĂŒĂe
Chris
Vielen Dank,
ich werde mein GlĂŒck mal versuchen.
GruĂ und frohes Schaffen im Neuen Jahr
Erich
Das wĂŒnsche ich Dir auch. Vielen Dank.
Chris
grĂŒsse.
habe folgendes problem… wenn ich einen ganztĂ€gigen Termin im Kalender eintrage z.b Anfang 7.01.2019- ende 08.01.2019 erscheint in der Tabelle als Enddatum der 09.01.2019 ?
woran liegt das ?
Mit freundlichen GrĂŒĂen
Im Kalender wird das vermutlich genauso stehen. Der Termin geht dann bis um 09.01.2019 um 00:00 Uhr. Das Script liest nur aus was aus dem Kalender kommt und benutzt die eingetragenen Start und Endzeiten.
Vielen Dank fĂŒr das tolle Tutorial!
Das hilft mir bei meiner Managment-TĂ€tigkeit, hier in Japan, sehr!
Wie kann man eigentlich bestimmte Events ausblenden oder einfach weglassen?
Zum Beispiel wenn im Kalendereintrag "Fahrt nach…" steht oder "Date mit…" oder andere, nicht so passende Termine.
Vielen Dank im Voraus und GrĂŒĂe in die Heimat nach Deutschland!
Gerome
Hallo Gerome du könntest so etwas zum Beispiel in der FOR Schleife integrieren.
Hier kannst Du dann mit einer IF oder IF / ELSE Abfrage bestimmte EintrÀge zulassen oder eben nicht. Die Abfrage kann sich dann auf den Titel oder auch der Beschreibung beziehen.
Ein Beispiel welches Dir ungefĂ€hr zeigt wie Du mit regulĂ€ren AusdrĂŒcken bestimmte Texte innerhalb vom Titel oder der Beschreibung finden könntest findest Du hier:
Textinhalt vergleichen & markieren (Google Tabellen / Spreadsheets) Script
Das musst Du natĂŒrlich erst noch auf deine WĂŒnsche entsprechend anpassen aber dort stecken schon mal die Funktionen drin die Du fĂŒr die Textsuche benötigst.
Ein Tutorial fĂŒr die IF oder IF/ ELSE Abfrage findest Du hier:
IF und IF ELSE Abfrage
Deinen anderen Kommentar mit dem fast gleichen Inhalt habe ich gelöscht. Die Freigabe von Kommentaren dauert leider etwas, da ich zeitlich sehr eingeschrĂ€nkt bin đ
Viele GrĂŒĂe
Chris
Hi Chris,
vielen Dank fĂŒr das Tutorial. LĂ€uft bei mir soweit gut, ich hĂ€tte nur gerne noch eine weitere Spalte, in der die Namen der Teilnehmer aufgefĂŒhrt sind. Aktuell habe ich das mit get.Guests() gemacht, jedoch steht dann dort nur die E-Mailadresse eines einzelnen Teilnehmers und nicht eine Liste von allen Namen, die im Termin eingeladen sind.
Ich habe hier was rumgesucht: https://developers.google.com/apps-script/reference/calendar/calendar-event, aber ich habe es nicht hinbekommen, dass mir eine GĂ€steliste angezeigt wird.
Kannst du mir helfen?
Danke schon mal und viele GrĂŒĂe,
Robby
Hi Chris,dein Tutorial ist super und auch fĂŒr mich als AnfĂ€nger verstĂ€ndlich. Habe meinen Google Kalender ausgelesen und freue mich das alles so ist wie du es beschrieben hast. Ich möchte jetzt aus Spalte A wo die Farbmakierungen sind , die zu den unterschiedlichen Farben gehörigen Titel z.B. sotiert nach Farbe inSpalte H , I J usw. kopieren. Welche Formel muĂ ich dazu eingeben .
Freue mich ĂŒber deine Antwort
Danke in voraus
JĂŒrgen
Hallo Chris
Danke fĂŒr Deinen Einsatz, welcher die Verwaltung und ErgĂ€nzung des Kalenders enorm rationalisiert.
In meinen Vortabellen, welche ich brauchte zum Importieren in den Google-Kalender, habe ich "All Day Event" und "Private" drin, welche mit "True" oder "False" funktionieren.
Die ErgĂ€nzung Deines Scriptes mit "getAllDayEvent" und "getPrivate" fĂŒhrte zu keinem Erfolg. Zumindest "Private" ist wichtig fĂŒr die Pflege meines Kalenders, da selbiger öffentlich einsehbar ist als VerfĂŒgabar oder nicht verfĂŒgbar.
Dein Script ist fĂŒr mich zum Lesen nachvollziehbar, doch weiss ich nicht, ob ich fĂŒr "getPrivate" etwas ergĂ€nzen muss.
GrĂŒsse
Ben
Ich habe das Script ein wenig erweitert. Damit kann ich filtern (Begriffe im Titel und in der Beschreibung suchen bzw. ausschlieĂen), auĂerdem kann ich auswĂ€hlen, welche Felder in welcher Reihenfolge angezeigt werden. und ob die Farbkennzeichnung ĂŒbernommen wird. Bei Ganztagsterminen werden zur Verbesserung der Ăbersichtlichkeit die "00:00"-Uhrzeiten ausgeblendet und statt des Enddatums wird die Dauer in Tagen gezeigt. Die Geschwindigkeit ist ordentlich geblieben, fĂŒr eine gefilterte Ganzjahres-Liste mit etwa 200 EintrĂ€gen lande ich bei ungefĂ€hr drei Sekunden.
Moin Chris,
ich habe alles genau so gemacht und wenn ich auf "AusfĂŒhren" klicke, komme ich zum PopUpFenster >>> Autorisierung erforderlich
FĂŒr dieses Projekt ist Ihre Erlaubnis zum Dateizugriff erforderlich. <<<
nach "Berechtigungen ĂŒberprĂŒfen geht es weiter mit Konto auswĂ€hlen, das hab ich erledigt und dann kommt <<<< Autorisierung erforderlich
FĂŒr dieses Projekt ist Ihre Erlaubnis zum Dateizugriff erforderlich. <<<<< und der Button "zurĂŒck". Als nĂ€chstes "Google-Konto-Hilfe" und da weiĂ ich dann nicht mehr weiter. Im Endeffekt erhalte ich nachfolgende Meldung im Datenblatt mit deiner Formel:
10:21:22 Warnung FĂŒr die AusfĂŒhrung dieses Projekts ist der Zugriff auf Ihr Google-Konto erforderlich. Versuchen Sie es bitte noch einmal und erlauben Sie diesmal den Zugriff.
Es wÀre schön, wenn du mir helfen könntest.
Danke schön.
LG Anne
Hi Chris,
ich bin mit Scripen noch wenig vertraut, komme mit Formeln jeglicher Art in Tabellen etc aber gut zurecht.
Ich habe Dein obiges Script fĂŒr meinen Bedarf wie folgt ein wenig geĂ€ndert und hoffe, das geht so in Ordnung:
function Arbeitszeit(){
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Arbeitszeit");
var now=new Date();
// Startzeit
var startZeitpunkt=new Date(ss.getRange("B4").getValue());
// Endzeit
var endZeitpunkt=new Date(ss.getRange("B5").getValue());
var events=CalendarApp.getCalendarById("XXXXXXXmeinKalenderXXXXX@group.calendar.google.com").getEvents(startZeitpunkt, endZeitpunkt);
var startZeile=6;
ss.getRange(("B"+startZeile)+(":G"+ss.getLastRow()+1)).setValue("");
if(events.length>0){
for (var i=0;i6;(I6-0,5);I6)". Und am Ende sollen natĂŒrlich ganz unten die Werte Spalte 10 summiert angegeben werden (Brutto-Arbeitsstunden) und auch die Werte der Spalte 11 (Netto-Arbeitsstunden).
Ich habe zunĂ€chst diese Formeln in das Tabellendokument eingefĂŒgt und nach unten kopiert. Nachdem sich aber die gröĂe der Tabelle mit dem gewĂ€hlten Zeitraum durchaus erheblich verĂ€ndern kann, ist das nur bedingt eine Lösung. Besser wĂ€re es also, diese in Form einiger weniger Script-Zeilen in AbhĂ€ngigkeit vom gewĂ€hlten Zeitraum an die obigen Zeilen "ss.getRange(i+startZeile,1 – 8) …." anzufĂŒgen. FĂŒr Script-Insider sicherlich eine einfache Aufgabe, fĂŒr mich allerdings noch ein holpriger Weg, weshalb ich auf Deine/Eure Hilfe hoffe (vor allem die Einbindung von Formeln in das Script erschlieĂt sich mir noch nicht). Vielen Dank schon mal an dieser Stelle.
Hallo Chris,
Ich habe dein Skript mit Hilfe von Chat GPT so bearbeitet dass ich endlich einen Kalender in meinen BedĂŒrfnissen darstellen kann.
Ich möchte diesen Kalender mit Hilfe meines alten IPad 3 im Vollbild an die Wand, bzw. an den KĂŒhlschrank, bringen.
ich bekomme das einfach nicht hin. Ich habe versucht die fertig konfigurierte Tabelle als HTML Datei frei zu geben. Das funktioniert aber die Schriften werden nicht dargestellt. Das Einbetten hat nicht funktioniert. Ich habe keinen HTML Surfer wo ich das hochladen kann. Ich will das lokal lösen.
Dann dachte ich ich könnte die Tabelle als VerknĂŒpfung In Google PrĂ€sentationen im PrĂ€sentationsmodus auch wieder als HTML Datei darstellen. Das hat geklappt, die Tabelle sieht gut aus und ist ordentlich formatiert. Die VerknĂŒpfung aktualisiert sich aber nicht automatisch, selbst wenn ich die PrĂ€sentation neu lade. Ich muss die VerknĂŒpfung immer mit der Hand aktualisieren. Das hilft mir aber nicht.
Die Schriftarten sind Google Fonts, ich habe keinen Weg gefunden Sie einzubetten.
Es gibt nur eine Möglichkeit Die Tabelle in die PrĂ€sentation einzufĂŒgen das sie sich aktualisiert und zwar so:
Man erstellt aus der Tabelle ein Diagramm und stellt das dann wieder als Tabelle dar, aber dann verliert die Tabelle ihre komplette Formatierung.
Ich hoffe du oder die Community kann mir helfen.
Viele GrĂŒĂe Thomas