Kalender mit Tabelle verbinden (Google Tabellen Script)
In diesem Tutorial zeige ich Euch wie Ihr Euren Google Kalender mit einer Google Tabelle / Spreadsheets verbinden könnt. Es gibt noch ein weiteres Tutorial welches für Euch interessant sein könnte. Hier werden alle Termine vom Kalender in der Tabelle angezeigt abhängig davon welches Start und Enddatum Ihr eingebt: Alle Termine vom Google Kalender in Tabelle anzeigen
Das Script könnt Ihr hier kopieren und die Funktion dann über den Script-Editor einfügen. Um auf den Kalender zugreifen zu können braucht Ihr die noch die entsprechende ID.
Wie das alles funktioniert zeige ich in dem Video unten.
Das Script zum Kopieren
function myCalendar(){ var now=new Date(); // Startzeit var startpoint=new Date(now.getTime()-60*60*24*100*1000); // Endzeit var endpoint=new Date(now.getTime()+60*60*24*100*1000); var events=CalendarApp.getCalendarById("DEINE KALENDER - ID").getEvents(startpoint, endpoint); var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("meineTermine"); ss.clear(); for (var i=0;i<events.length;i++) { ss.getRange(i+1,1 ).setValue(events[i].getTitle()); ss.getRange(i+1,2).setValue(events[i].getDescription()); ss.getRange(i+1,3).setValue(events[i].getStartTime()); ss.getRange(i+1,4).setValue(events[i].getEndTime()); } }
Wie immer ist die Benutzung des Scripts auf eigene Gefahr.
Euch gefällt das Script und Ihr wollt Euch unbedingt bedanken?
Hier ist meine AMAZON – Wunschliste [HIER KLICKEN] 😉
Reihenfolge umdrehen
Wer die Auflistung der Einträge umdrehen möchte kann ja mal die nachfolgende FOR – Schleife verwenden. Damit werden die neueren Einträge zuerst gezeigt.
Dafür müsst Ihr die FOR – Schleife nur austauschen . Die Zeile mit var zeile=1; müsst Ihr dann, wie in den Codezeilen zu sehen noch davor setzen.
var zeile=1; for (var i=events.length-1;i>=0;i--) { ss.getRange(zeile,1 ).setValue(events[i].getTitle()); ss.getRange(zeile,2).setValue(events[i].getDescription()); ss.getRange(zeile,3).setValue(events[i].getStartTime()); ss.getRange(zeile,4).setValue(events[i].getEndTime()); zeile++; }
Das Video – Tutorial "Google Kalender mit Tabelle verbinden"
Ähnliche Beiträge
- Zeitstempel programmieren in Google Tabellen
- Aktive Zelle auslesen mit einem Google Tabellen Script
- Einfügen oder löschen einzelner Zellen bei Google Tabellen
- Alle Termine vom Google Kalender in Tabelle anzeigen
- Daten anderer Tabellen kopieren (Google Tabellen Script)
- Hallo Welt in Google Tabellen Script
- Termin in den Kalender eintragen (Google Tabellen) Script
- Übersichts-Liste der GOOGLE Tabellen Script Tutorials
- Einfügen oder löschen von Zellbereichen (Google Tabellen Script)
- Tutorials über Google Tabellen Script - Programmierung
- Dynamischer Kalender mit Google Tabellen
- Übersicht der SCHLEIFEN (Google Tabellen Script) Snippet
- Vergleichen der Werte von Zellen mit Google Tabellen Script
- Mein erstes Script programmieren mit Google Tabellen
- Wertebereich einer Zelle mit Google Tabellen Script überprüfen
- WHILE SCHLEIFE (Google Tabellen Script) Snippet
- Daten mit Script an den Listenanfang verschieben (Google Tabellen Script)
62 Comments
Ich bin neben meinem Studium Sicherheitsbeamter und habe eine Excel-Tabelle (mittlerweile Google Tabellen) um mir meine Stunden aufzuschreiben.
Mein Ziel war es, die Einträge aus der Tabelle, direkt in meinen Kalender einzutragen.
Er erkennt jetzt aber nicht mein Datum als Date an sondern nur als String wenn ich es aus der Tabelle auslese.
Mein Code:
function myCalendar(){
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("termine");
var title;
var startTime;
var endTime;
//var descrip;
var ort;
var events=CalendarApp.getCalendarById("ID-meinesKalenders");
for (var i=0;i<ss.getLastRow();i++) {
title=ss.getRange(i+1, 1).getValue();
startTime=ss.getRange(i+1, 3).getValue();
endTime=ss.getRange(i+1, 4).getValue();
ort=ss.getRange(i+1, 2).getValue();
events.createEvent(title, startTime, endTime,{location: ort});
}
}
So wie ich das verstanden habe, sollte die getValue() ein Objekt zurückgeben.Er schreibt es mir zwar richtig in den Kalender gibt aber trotzdem den Fehler aus: "Methode createEvent(string,string,string,object) nicht gefunden (Zeile 16, Datei "Tabelle_in_Calendar")"
Wie kann ich dir die Tabellen dazuschicken? Ich glaube dass es indirekt mit der Formatierung in der Tabelle Diskrepanzen gibt.
Mein Problem ist, dass ich in der Tabelle ein ARRAYFORMULA(..) aus zwei Zellen einer anderen Tabelle aufrufe und die irgendwie öfters Zellenformat ändert (Automatisch, ReinerText, Date/Time…).
LG Alex
Hi Alex, sieht so aus als liegt es wirklich an den Datumseinträgen. Normal muss hier das ganze so aussehen:
createEvent(Titel, StartZeit, EndZeit, options)
createEvent(String, Date, Date, Object)
Du übergibst laut Fehlermeldung statt den Date – Objekten eine normale Zeichenkette also Strings
Als Beispiel – Script sieht das ganze so aus:
var event = CalendarApp.getDefaultCalendar().createEvent('Mein Titel',
new Date('July 15, 2017 20:00:00 UTC'),
new Date('July 15, 2017 21:00:00 UTC'),
{location: 'Mein Ort'});
Du müsstest mal über
Logger.log('MEINE VARIABLE 1': + DeineVariable);
Die Daten auslesen damit Du siehst was da genau übergeben wird.
Vielleicht kannst Du Deine eigenen Zeitangaben, also die Strings in die new Date aufrufe integrieren. aber darauf achten das hier UTC eventuell noch geändert werden muss
Schau Dir mal diese Seite an:
https://developers.google.com/adwords/scripts/docs/features/dates
Hier ist der Abschnitt "Datumsobjekt auf der Grundlage eines formatierten Datumsstrings erstellen" interessant.
Viele Grüße
Chris
Hallo Crhis,
danke für die schnelle Rückmeldung, ich war ein paar Tage weg.
Mit dem <> aus dem Link
hat alles super funktioniert.
Danke vielmals.
LG
Alex
Servus Alexander,
kannst du bitte dein fertiges Script hier posten? Ich habe das Selbe vor wie du, bin aber im Coden (?) eine absolute Null.
Grüße
Hallo Alexander,
könntest du dein fertiges Skript bitte hier reinposten? Danke dir! LG, Julia
Hallo,
bin durch Zufall auf diese Seite bzw. das Thread gestoßen.
Bin mit Spreadsheet etc gar nicht bewandert und wollte daher fragen, ob du noch den ganzen Code veröffentlichen könntest?
Habe meine Terminübersicht in Excel und wollte diese in den Googlekalender übertragen, allerdings ohne Erfolg und dann habe ich dieses Tutorial entdeckt, allerdings komme ich mit den Codebruchstücken leider nicht klar 😀
LG
David
Hallo Chris,
vielen Dank für dieses Tutorial. Ist es auch andersherum möglich? Ich benötige Infos aus dem googlesheet angezeigt im Googlekalender.
Wir würde das funktionieren oder hast du dafür auch schon ein Tutorial?
LG
Steffi
Hi Steffi, ein Tutorial habe ich dafür noch nicht gemacht aber das sollte kein Problem sein dass von einer Tabelle in den Kalender zu bringen. Ich müsste mich allerdings selbst erst damit auseinander setzen.
Hier ist aber ein Link der Dir einige Möglichkeiten schon mal zeigt: https://developers.google.com/apps-script/reference/calendar/
LG
Chris
hallo!
Das würde mich auch sehr interessieren! Hast du dafür schon eine Lösung / ein Script gefunden?
LG
Konradin
Hi Chris, ist es auch möglich das ganze zu Automatisieren? er updatet den Kalender nicht bei einem neuen Eintrag :X
Schau Dir mal die Funktionen onOpen an oder die Möglichkeit von Trigger.
Mit onOpen wird beim Öffnen der Tabelle die Funktion direkt aufgerufen und in Deinem Fall die Tabelle mit Daten aktualisiert.
https://toptorials.com/daten-sortieren-beim-oeffnen-google-tabellen-spreadsheets-script/
Mit dem zeitlich gesteuerten Funktionen kannst Du Funktionen nach gewissen Zeitpunkten ansteuern. Habe aber bisher noch nicht probiert wie das funktioniert wenn das aktiv ist und Du gerade daran arbeitest.
Kannst ja dann mal Deine Erfahrungen hier mitteilen 😉
https://toptorials.com/funktion-zeitlich-gesteuert-ausfuehren-google-tabellen-script/
Eine andere Variante wo Du einen Eintrag im Kalender vornimmst und dadurch automatisch die Tabelle aktualisiert wird kenne ich noch nicht, soll aber nicht heißen das es sie nicht gibt 😉
Vielen Dank für die super schnelle Antwort!
OnOpen klingt sehr gut, leider will es bei mir nur nicht funktionieren, erkennst du den Fehler?
function myCalendar(){
function onOpen(){
var now=new Date();
// Startzeit
var startpoint=new Date(now.getTime()-60*60*24*100*1000);
// Endzeit
var endpoint=new Date(now.getTime()+60*60*24*100*1000);
var events=CalendarApp.getCalendarById("xxx").getEvents(startpoint, endpoint);
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Termine");
ss.clear();
var zeile=1;
for (var i=events.length-1;i>=0;i–) {
ss.getRange(zeile,1 ).setValue(events[i].getTitle());
ss.getRange(zeile,2).setValue(events[i].getDescription());
ss.getRange(zeile,3).setValue(events[i].getStartTime());
ss.getRange(zeile,4).setValue(events[i].getEndTime());
zeile++;
}
}
}
Schau Dir mal den Link an und das dazugehörige Script was ich Dir gerade geschickt habe. Da wird sozusagen Deine Funktion in der onOpen Funktion aufgerufen.
onOpen wird immer automatisch von Google aufgerufen beim Öffnen der Tabelle. Du hast die Funktion jetzt in Deine integriert was so aber nicht funktioniert.
Also onOpen extra lassen und darin Deine Funktion aufrufen. In dem Beispielscript sieht Du wie das aufgebaut ist. Dann sollte es funktionieren 😉
Hab es jetzt so probiert, so schaut es in deinem Link aus, aber auch da will er einfach nicht 🙁
Er fragt mich auch nach "Funktion auswählen"
:/
function onOpen(){
}
function myCalendar(){
var now=new Date();
// Startzeit
var startpoint=new Date(now.getTime()-60*60*24*100*1000);
// Endzeit
var endpoint=new Date(now.getTime()+60*60*24*100*1000);
var events=CalendarApp.getCalendarById("xxxmail.com").getEvents(startpoint, endpoint);
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Termine");
ss.clear();
var zeile=1;
for (var i=events.length-1;i>=0;i–) {
ss.getRange(zeile,1 ).setValue(events[i].getTitle());
ss.getRange(zeile,2).setValue(events[i].getDescription());
ss.getRange(zeile,3).setValue(events[i].getStartTime());
ss.getRange(zeile,4).setValue(events[i].getEndTime());
zeile++;
}
}
Na ja, ich hatte Dir diesen Link geschickt:
https://toptorials.com/daten-sortieren-beim-oeffnen-google-tabellen-spreadsheets-script/
Hier ist innerhalb der onOpen Funktion der Funktionsaufruf. Also sollte Deine onOpen Funktion folgendermaßen aussehen:
function onOpen(){
myCalendar();
}
Das ganze funktioniert aber nur mit Google Kalender. Die ID die bei getCalendarById stehen müsste ist eine ID für einen Google Kalender. Das zeige ich aber auch im Video-Tutorial. Ich habe nämlich gerade dieses xxxmail.com gesehen. Hoffe Du hast das jetzt nur für diese ID ersetzt damit das keiner lesen kann???
Hi Chris !
Bin bezüglich Excel und Javascript ein totaler Newbie und bekomme Javascript mit Excel generell nicht zum Laufen.
Welche Schritte muss ich denn tun, was ggf. installieren, damit deine Scripte funktionieren ?
Bei mir bietet Excel immer nur VBA an.
Antwort am besten auf tomkug@gmx.de.
Danke im voraus
Hallo Thomas, VBA und die Google Script Programmierung sind sehr verschieden. Das Übertragen der Google Scripte nach Excel ist deshalb nicht möglich. Das heißt Du müsstes die Scripte entsprechend dem Programm komplett umschreiben.
Ob es ein Plugin gibt welches die Scripte umschreibt kann ich mir nicht vorstellen oder zumindest kenne ich keines.
Um das hin zu bekommen müsstest Du Dich jetzt eigentlich in beiden Programmiersprachen (Excel VBA und Google Script) einarbeiten und dann das Script umschreiben. Wäre aber ein ziemlich langer Weg.
Ich würde mich deshalb lieber in die Programmiersprache einarbeiten die Du später oft nutzen wirst. Wenn Du also mit Excel arbeitest und dort bleiben willst, dann solltest Du Dich in die VBA Programmierung einarbeiten.
Teilweise kannst Du statt der Programmierung auch Makros oder halt Plugins benutzen. Auch zum Lernen der Programmiersprache sind Makros sehr hilfreich und zeigen Dir wie der Code aussieht. Bei bestimmten Problemen würde ich mir dann ein gutes und hilfreiches Forum suchen oder verschiedene ähnliche Programme anschauen und anpassen. Die Einarbeitung dauert zwar immer etwas aber es macht sehr viel Spaß wenn man sieht wie man das gelernte nach und nach umsetzen kann.
Viele Grüße
Chris
Hab die Email nur raus genommen bzw. ID
Es sieht nun so aus, und irgendwie tut sich auch was aber er will noch nicht richtig durchstarten, sobald ich was im Kalender lösche bleibt es in der excel, füge ich etwas im Kalender hinzu kommt es nur rein wenn ich über tools das script starte 🙁
Danke für deine Hilfe!
function onOpen(){
myCalendar();
}
var now=new Date();
// Startzeit
var startpoint=new Date(now.getTime()-60*60*24*100*1000);
// Endzeit
var endpoint=new Date(now.getTime()+60*60*24*100*1000);
var events=CalendarApp.getCalendarById("@gmail.com").getEvents(startpoint, endpoint);
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Termine");
ss.clear();
var zeile=1;
for (var i=events.length-1;i>=0;i–) {
ss.getRange(zeile,1 ).setValue(events[i].getTitle());
ss.getRange(zeile,2).setValue(events[i].getDescription());
ss.getRange(zeile,3).setValue(events[i].getStartTime());
ss.getRange(zeile,4).setValue(events[i].getEndTime());
zeile++;
}
Wie gesagt onOpen wird nur aufgerufen wenn Du die Tabelle öffnest. Du kannst ja mal statt onOpen auch onEdit versuchen. Dafür brauchst Du nur den Funktionsnamen onOpen in onEdit zu ändern.
oder noch besser beide Funktionen. Denn wenn Du onEdit benutzt wird das nicht aktualisiert wenn Du die Tabelle das erste mal wieder aufrufst. Also doch besser beide Funktionen benutzen und Deine Funktion damit aufrufen.
Hab jetzt mal beide Funktionen eingebaut aber … vielleicht soll es einfach nicht sein …^^ Will dir da auch nicht deine Kostbare Zeit kaputt machen, ich danke dir für deine Hilfe!
function onEdit(){
function onOpen(){
myCalendar();
}
function myCalendar(){
var now=new Date();
// Startzeit
var startpoint=new Date(now.getTime()-60*60*24*100*1000);
// Endzeit
var endpoint=new Date(now.getTime()+60*60*24*100*1000);
var events=CalendarApp.getCalendarById("teamvidar@gmail.com").getEvents(startpoint, endpoint);
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Termine");
ss.clear();
var zeile=1;
for (var i=events.length-1;i>=0;i–) {
ss.getRange(zeile,1 ).setValue(events[i].getTitle());
ss.getRange(zeile,2).setValue(events[i].getDescription());
ss.getRange(zeile,3).setValue(events[i].getStartTime());
ss.getRange(zeile,4).setValue(events[i].getEndTime());
zeile++;
}
}
}
Mach das mal so:
function onOpen(){
myCalendar();
}
function onEdit(){
myCalendar();
}
Die erste Funktion wird ausgeführt beim Öffnen der Tabelle oder beim aktualisieren des Fensters.
Die zweite Funktion wird ausgeführt wenn Du etwas in einer Zelle ändern solltest.
Aber jetzt muss es einfach funktionieren 😉 😉 😉
Jetzt geht es ! 😀 Danke Dir und sry sry das ich dich so beschäftigt habe! Vielen Vielen Dank!
Super, freut mich zu hören. Ich habe den letzten Kommentar gerade nochmal kurz geändert, denn dort hatte ich zweimal die gleiche Funktion drin. Du brauchst onOpen und onEdit.
Hatte versehentlich zweimal onEdit eingetragen.
Wünsche noch einen schönen Sonntag Abend 😉
Hallo Chris,
vorab vielen Dank für deine hilfreichen Tutorials:-)
Ich habe mich mal an die Fragestellung der Steffi gewagt ( Termine von Tabelle in Kalender übernehmen). Hier der Code:
function onOpen(){
addEvents();
}
function addEvents (){
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Kalender");
var lr = ss.getLastRow();
var cal = CalendarApp.getCalendarById("KALENDER");
var data = ss.getRange("A2:F" + lr).getValues();
for (var i = 0;i<data.length;i++){
cal.createEvent(data[i][0],data[i][1],data[i][2], {location:data[i][3], description:data[i][4]});
}
}
Will nun, dass die bisherigen Kalendertermine gelöscht und mit den neuen gefüttert werden. Ansonsten stehen die Termien ja doppelt drin.
Kannst du mir hierbei helfen? Vielen Dank
Schau mal hier bei den Snippets:
Suche bei Toptorials mit dem Suchbegriff löschen und Snippet
Je nachdem wie Du Deine Tabelle aufgebaut hast kannst Du entweder "vor" dem Laden des Kalenders mit onOpen die ganze Seite löschen oder nur einen entsprechenden Bereich.
Teste das aber erstmal mit einer Kopie Deiner Tabelle sonst sind die Daten natürlich weg wenn Du Pech hast 😉
Viele Grüße
Chris
hallo chris, ich wünsche mir, dass ich in google tabellen meine Termine eintragen kann, und es diese dann automatisch auf meinen Kalender importiert. Wie geht das?
Hast du einen Code für mich?
Würde mich sehr über eine schnelle Antwort freuen
Hi, schnelle Antworten gibt es hier leider nicht (mehr). Ich habe momentan ein Aufkommen von über 2000 Kommentaren pro Monat (Toptorials.com und auf anderen YouTube Kanälen).
Du kannst aber mal in den Kommentaren unten schauen, dort hat jemand schon ein kurzes Script erstellt welches Du entsprechend anpassen kannst.
Viele Grüße
Chris
Hallo Chris!
Danke für Deine Artikel.
Ich habe in einem Google account diverse Kalender selber angelegt und auch von anderen "abboniert".
Kann man das Script auch so umwandeln, dass es alle Kalender auf einmal abholt?
(es sind auch ical abonierte Kalender (nicht von google dabei)
Das Script ist relativ simpel aufgebaut und es sollte kein Problem sein das für mehrere Kalender anzuwenden. Bisher habe ich das nur mit eigenen Kalendern probiert und in wieweit das bei anderen funktioniert habe ich noch nicht testen können.
Je nachdem wie Du das Ergebnis zurückgeliefert haben willst musst Du das Script natürlich entsprechend anpassen. Es gibt ja dafür verschiedene Ideen um das umsetzen zu können. In jede Tabelle einen Kalender oder alle Kalender untereinander in einer Tabelle sowie die Termine ineinander gemischt in einer Tabelle und so weiter.
Wenn Du jeden Kalender in einer eigenen Tabelle machen willst ist das vermutlich die einfachste Variante. Wenn Du das so machen willst dann kannst Du das Script mehrfach kopieren und änderst nur den Funktions und Tabellennamen. Zum Schluss erstellst Du Dir eine Funktion die alle Funktionen aufruft damit Du nur einen Button zum aktualisieren drücken musst oder packst diese Funktionsaufrufe in eine onOpen Funktion damit die Funktionen aufgerufen werden wenn Du das Tabellendokument öffnest oder aktualisierst.
Hallo,
kann immer nur sagen, DANKE für DIESE TOLLEN SEITEN!
Ich habe hier allerdigns ein Problem…ich hatte gehofft, dass dieser Import – anders als eine ICAL Datei – die Termine gleich "ausgerollt" hat. Damit meine ich 1 zu 1 wie die Terminübersicht in Google Kalender selber. Während er das bei wiederkehrenden Terminen ordenlich macht, fehlt dies bei tagesübergreifenden Terminen. Abstraktes Beispiel: Das dreitägige Schützenfest wird nur am 1. Tag angezeigt (da allerdings auch dass es drei Tage dauert. Ich hätte mir gewünscht, dass es an jedem der drei Tage im Kalender steht – wie bei google auch.
Dies hat wohl nichts mit dem Skript zu tun, sondern hängt wohl mehr an googles export, oder?
Auch hat er hier das Problem, dass er einen eintägigen ganztägigen Termin bis zum nächsten Tag anzeigt (von bis). Der Termin selber steht aber richtigerweise zum Glück nur an dem Tag drin. Bei Terminen mit Uhrzeit macht er das nicht. Das Problem habe ich auch schon bei der ICAL Schnittstelle beobachtet. Hängt ggf. mit Zeitumstellung zusammen.
Hallo Chris,
ein weiterer Punkt: Im Video wird gesagt, dass es auch mit dem Grund/Hauptkalender geht.
Leider zeigt er bei mir beim Hauptkalender in google bei ID nur meine e-mail-Adresse an.
Damit geht es leider nicht. Hat sich hier etwas bei google geändert?
Ich habe das gerade noch einmal getestet. Ich hatte den Testkalender in der Zwischenzeit gelöscht und musste mir noch einmal schnell einen neuen machen und die ID davon testen. Das hat alles normal geklappt.
Auch mit dem Hauptkalender hatte ich keine Probleme. Bei mir war es auch die Emailadresse die ich für den Hauptkalender als ID benutzen musste. Die Termine wurden mir auch ohne Probleme angezeigt.
Die Emailadresse muss natürlich auch in Anführungszeichen stehen damit es klappt.
Danke Chris für Deine Antwort. Du hast recht, es klappt doch mit dem Hauptkalender. Weiss nicht, was ich falsch gemacht hatte. Mea culpa!
Mein Problem (Eintrag vom 4. November 2018 um 17:43 Uhr) stellt mich allerdings weiter vor einer großen Herausforderung bzw. weiss nicht, ob ich den Kalender nutzen kann, wenn das nicht geklärt ist.
Möchte halt im Ergebnis 1:1 die Übersicht von google selber wieder haben.
Da müsste ich lügen und ich glaube das ist etwas komplizierter zu programmieren. Wenn ein Termin über mehrere Tage geht müsste man vermutlich alle Daten in ein Array packen und vorher jeden einzelnen Tag noch einmal separat betrachten. Würde ein Eintrag über mehrere Tage gehen würde man das Array entsprechend erweitern und die zusätzlichen Tage eintragen also den Eintrag splitten sodass in dem Array für einen 3 Tage Termin dann 2 zusätzliche Tage eingetragen werden (Haupteintrag und die 2 zusätzlichen Tage).
Funktionieren würde das bestimmt aber ist halt immer mit etwas Aufwand verbunden.
Hallo Chris
Als erstes möchte ich dir herzlich Danken für deine genialen Beiträge.
Nun habe ich leider doch noch eine Frage, welche ich mit der Sufu nicht klären konnte.
Ich habe bei mir alle (ca. 5 Kalender) wie nach deiner Anleitung in die Google Tabelle "eingefügt" und dies funktioniert.
Nun zu meiner Frage:
Kennst du oder besser gesagt hast du eine Möglichkeit die Tabelle mit den Kalender Einträgen automatisch zu aktualisieren?
Leider sind bei mir "nur" die Daten mit dem "Stand Gestern". Beim anwählen "Letzte Änderung gestern um 17:29" öffnet sich nur ein neues Fenster welches aber anschliessend leer bleibt.
Ich hoffe du kannst du bei meinem Problem weiterhelfen.
Vielen Dank
Gruss Patrick
Hallo Patrick,
Um die Kalenderdaten immer aktuell zu halten könntest Du mehrere Dinge machen. Zum Einen die Funktion in eine onOpen Funktion oder onEdit packen oder einen zeitlich gesteuerten Trigger benutzen der nach angegebenen Intervallen das Script ausführt.
Was die zeitliche Geschichte angeht könnte es eventuell sein dass im Script die Zeitangabe angepasst werden muss oder aber auch die lokalen Zeiteinstellungen in den Einstellungen nicht übereinstimmen.
Hinweis: Dein Kommentar ist im Spam Ordner gelandet weil angeblich eine falsche IP Adresse benutzt wurde?
Viele Grüße
Chris
Hi, wie kann ich die ersten drei Zeilen behalten? ss.clear () löscht immer das ganze sheet.
ich würde aber gerne die Kopfzeile behalten. geht das?
Ja, das geht. Ich habe dafür gerade ein kleines Tutorial erstellt wo Du siehst wie man so etwas lösen kann.
Schau mal hier: Alles löschen außer Titel mit Google Tabellen Script (Snippet)
Viele Grüße
Chris
Hallo danke für das super Tutorial, aber ich habe noch eine Frage und zwar möchte ich aus Google Kalender die Daten auslesen und es dann im Datenbank importieren bzw. eine Benachrichtigung programmieren, d.h, die Termine, die ich z.B heute habe, sollen dann als Benachrichtigung auftauchen., um das zu erreichen, muss ich davor die Daten aus Google Kalender auslesen können. Ich hoffe du kannst mir dabei behilfich sein. Danke im Vorraus und freue mich auf weitere Tutorials 🙂
Hallo Isa,
hier ist ein kleines Script welches Dir zeigt wie Du Daten aus dem Kalender auslesen kannst:
https://toptorials.com/alle-termine-kalender-google-tabellen-spreadsheets-script/
Hier ist noch ein kleines Script welches Dir zeit wie man per Script eine Email verschicken kann:
https://toptorials.com/email-mit-pdf-anhang-versenden-als-google-tabellen-script/
Diese beiden Scripte sollten genug Infos enthalten um sich die gewünschten Daten aus dem Kalender per Email zu senden.
Viele Grüße
Chris
Hey, danke für das Coole Tutorial,
Gern geschehen und DANKE für das nette Feedback 🙂
Hallo,
ganz herzlichen Dank für die tolle Anleitung!
Ich möchte genau das machen, aber mit mehreren Kalendern. Außerdem brauche ich bei jedem Eintrag noch die Info, aus welchem der vier Kalender der Eintrag stammt.
Wie kriege ich das am besten hin? Ich weiß nicht
– wie die die vier Listen zusammenfüge
– wie ich sie dann nach (Start-)Datum sortieren kann
– wie ich die zusätzliche Info des Kalenders unterkriege.
Hilfe wäre ganz toll, gerne auch per E-Mail.
Du kannst ja im Script selbst mehrere solcher Einheiten untereinander schreiben. Jeder Kalender für sich wird dann separat untereinander eingetragen. Da Du selbst weißt wie der Kalender heißt auf den Du zugreifst, spendierst Du ihm im Script in einer extra Spalte den entsprechenden Namen vom Kalender. Die Rohdaten die dann in einer Tabelle liegen kannst Du dann in einer weiteren Tabelle zum Beispiel mit SORT sortieren lassen, je nachdem wie Du etwas sortieren möchtest.
… und noch eine Frage hinterher:
Wie erkenne ich, ob ein Termin ein ganztägiger Termin ist? Dann möchte ich ungern von 1.2.2019 0 Uhr bis 2.2.2019 0 Uhr drin stehen haben.
Gibt es dafür einen Feldeintrag oder muss ich das anhand der Daten selbst berechnen, ob ein ganztägiger Termin vorliegt?
Soweit ich mich erinnern kann werden die Daten vom Script genauso aus dem Kalender gezogen, das heißt Dass Du das berechnen kannst/musst . Ich hatte bisher leider noch keine Zeit mich tiefer in die Materie einzuarbeiten.
Hallo Chris
Ich administriere eine einfache Webseite über google sites für einen Freundeskreis und Deine Tutorials haben mir schon echt sehr geholfen ! – vielen Dank.
Ich habe folgendes vor:
Ich möchte ein Formular anbieten, in dem ein Kalender angezeigt wird, in welchem man auswählen kann, an welchen Tagen man an einer Veranstaltung teilnehmen möchte – also ähnlich wie in den Urlaubs-Portalen, wo man einen Kalender sieht, in dem man den ersten und letzten Urlaubstag eintragen kann um eine Reise zu buchen. Das Ergebnis solle dann in einer Tabelle abgelegt werden. Dein Tutorial, wie man einen Kalender mit einer Tabelle verknüpft, habe ich gesehen und auch sofort versanden – das ist also nicht das Problem – mein Problem ist das anzeigen des Kalenders in einem Formular, in dem ein Anwender dann seine Teilnahme eintragen kann.
Wäre toll, wenn Du mir hier weiterhelfen könntest –
MfG Fred
Guten Morgen.
Ich teste grad dieses Script. Das funktioniert schon richtig gut.
Leider bekomme ich es jedoch nicht richtig hin (vielmehr überhaupt nicht) mehrere Kalender in eine Tabelle zurückzugeben.
Kann mir dort jemand behilflich sein?
Mein Script sieht so aus mit einem Kalender:
function Terminuebersicht(){
var now=new Date();
// Startzeit
var startpoint=new Date(now.getTime());
// Endzeit
var endpoint=new Date(now.getTime()+60*60*24*750*1000);
var events=CalendarApp.getCalendarById("kalender1@test.eu").getEvents(startpoint, endpoint);
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Terminuebersicht");
ss.clear();
for (var i=0;i<events.length;i++) {
ss.getRange(i+2,1).setValue(events[i].getStartTime());
ss.getRange(i+2,2).setValue(events[i].getEndTime());
ss.getRange(i+2,3).setValue(events[i].getTitle());
ss.getRange(i+2,4).setValue(events[i].getDescription());
}
}
Bei mehreren Kalendern dachte ich an:
function Terminuebersicht(){
var now=new Date();
// Startzeit
var startpoint=new Date(now.getTime());
// Endzeit
var endpoint=new Date(now.getTime()+60*60*24*750*1000);
var events=CalendarApp.getCalendarById("kalender1@test.eu").getEvents(startpoint, endpoint);
var events=CalendarApp.getCalendarById("kalender2@test.eu").getEvents(startpoint, endpoint);
var events=CalendarApp.getCalendarById("kalender3@test.eu").getEvents(startpoint, endpoint);
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Terminuebersicht");
ss.clear();
for (var i=0;i<events.length;i++) {
ss.getRange(i+2,1).setValue(events[i].getStartTime());
ss.getRange(i+2,2).setValue(events[i].getEndTime());
ss.getRange(i+2,3).setValue(events[i].getTitle());
ss.getRange(i+2,4).setValue(events[i].getDescription());
}
}
Wenn es jemand weiss. Vielen Dank für die Hilfe.
Jürgen Kemper
Hallo,
mal eine einfache Frage. Wie sieht das Start- u. Endpoint aus, wenn man nur den aktuellen Tag abfragen möchte?
Hi Chris,
echt super, was ich alles bei den Tutorials lerne.
Riesen Dank dafür.
Ich würde gern kalendergesteuert Trigger auslösen um Funktionen auszuführen und finde dazu keine Informationen.
Weißt du wie das geht?
Viele Grüße
Waldemar
Hallo Chris,
Die Möglichkeit den Google Kalender als Exceltabelle auszugeben finde ich suger.Leider scheint das Einbetten der richtigen Kalender ID nicht zu klappen.
Ich benutze einen öffentlichen Kalender.Meine ID sieht komplett anders aus wie in deinem Video.Beim Testlauf kommt die Meldung Type Error:Methode "getEvents".
Gruß Ralf
Hallo Ralf,
füge als Kalender.Meine ID einfach deine eMail-Adresse ein ("Max.Mustermann@gmail.com") .
Gruß Rupert
Hallo, ich nutze dein Tutorial schon mehrfach. Diesmal hätte ich aber gern eine kleine Änderung. Ist es möglich bei einem ganzstägigen Ereignis nur das Datum (nicht Anfang und Enddatum) anzuzeigen? Das habe ich gelöst. Kann ich die Uhrzeit bei ganztägigen Events ausbleben? So sieht der veränderte Bereich aus:
ss.getRange(i+1,1).setValue(events[i].getStartTime());
// ss.getRange(i+1,2).setValue(events[i].getEndTime());
ss.getRange(i+1,3).setValue(events[i].getStartTime());
ss.getRange(i+1,4).setValue(events[i].getEndTime());
ss.getRange(i+1,5 ).setValue(events[i].getTitle());
ss.getRange(i+1,6).setValue(events[i].getDescription());
Hallo
Ich möchte eine Auflistung in Sheets machen aus dem Kalender. Ich sehe das Video ist aus dem Jahre 2016. Mittlerweile hat Google Kalender die ID Organisation geändert. Ich finde also die ID so wie im Tutorial beschrieben nicht in den Einstellungen. Kann es sein, dass das Tutorial überholt ist.
Danke für die Rückmeldung
Das konnte ich bisher noch nicht weiter testen aber im Kalender ist weiterhin in den Einstellungen die ID zu sehen. Leider arbeitet Google momentan daran meinen Account wieder herzustellen. Es ist mir im Moment (seit mehr als einer Woche) nicht mehr möglich Scripte zu autorisieren. Das wird also noch etwas dauern. Ich hoffe dass die das auf meine Hauptaccount überhaupt hinbekommen und ich nicht einen weiteren Account erstellen muss. Sowas darf meiner Meinung nach nicht passieren. Die werkeln, wie gesagt, schon mehreren Tage daran herum.
Beste Grüße
Chris
Hallo Chris,
Ich poste das einfach mal unter dieses Video da ich sonst nichts gefunden habe wie ich sonst mit dir Kontakt aufnehmen könnte. Ich möchte folgendes tun:
Ich hätte gern einen Familienkalender der sich mit meinen Google Kalender synchronisiert. In der obersten Zeile soll zum Beispiel Papa stehen in der Zelle daneben Mama in der Zelle daneben Kind eins in der Zelle der neben Kind zwei und so weiter. in den Spalten darunter wären dann die Tage 1-30 beziehungsweise 1-31.
Natürlich soll sich der Kalender auch selbstständig synchronisieren. Das ganze soll dann mittels einem großen Tablett oder einem alten Bildschirm an der Wand hängen. Kannst du mir da vielleicht helfen? Oder ein Ansatz geben wie ich das am besten lösen kann. Vor allem das selbstständige synchronisieren ist mir auch wichtig.
Deine Videos haben mir schon sehr oft geholfen vielen Dank dafür.
Mit freundlichen Grüßen Thomas
Kann mir wer helfen?
Es funktioniert aber er zieht mir viel zu viel Daten aus dem Kalender.
Ich möchte das der täglich nur die Daten anzeigt von dem heutigen Tag.
Heute ist der 8.12.2020 und der soll mir auch nur von heute die Daten anzeigen. Morgen soll der automatisch den 09.12.2020 saugen.
Habt ihr einen Tipp?
Super tutorial,
mir saugt der zu viel Daten! Von Anfang der Dinosauerier bis Jahr 2800 oder sowas.
Wie kann ich es so ändern das der nur den heutigen Tag anzeigt?
Täglich habe ich ca. 15-20 Einträge. Nur die mit dem heutigen datum soll der mir anzeigen.
Idee?
Hallo Chris,
erstmal herzlichen Dank für deine tollen Anleitungen!
Ich würde mir gerne auch den Ort aus dem Termin auslesen und in der Tabelle anzeigen lassen.
Leider finde ich keine Tabelle oder ähnliches welche "Kennung" diese Information im Kalender hat.
"Kennung" ist bestimmt nicht das richtige Fachwort, aber ich meine das Äquivalent von "Titel" in der Zeile "ss.getRange(i+1,2).setValue(events[i].getTitle());".
Ich hoffe du kannst mir weiterhelfen, vielleicht sogar mit einem Tipp, wo ich solche Informationen generell finden kann?
Liebe Grüße
Sarah
Hallo, sehr hilfreiches Script. Aber wie kann man ebenfalls Teilnehmer auslesen die a) eingeladen sind und b) zugesagt/abgesagt haben?
Danke und viele Grüße,
Janina
Hay Chris
Besteht auch die Möglichkeit mehrere Kalender ID`s mit Tabellen zu verbinden, würden gerne eine Übersicht aller Kalender erstellen, also einen Familienkalender