„Zum Kalender hinzufügen“-Button für GMail, Outlook, iCal
Zuletzt verändert am 24. Juli 2026 • 4 Min. Lesezeit • 743 Wörter
Das ist mehr Arbeit, als es im Jahr 2026 sein sollte. Dies waren die ersten Anleitungen, die bei mir funktioniert haben: https://www.litmus.com/blog/how-to-create-an-add-to-calendar-link-for-your-emails/ . Die Anleitung verwendet im Wesentlichen handgeschriebenen Code (sowie Code, der mit Amit Agarwals „Calendar Links“-Tool ( https://www.labnol.org/apps/calendar.html ) generiert wurde).
Aber muss es dafür nicht ein Chrome-Plugin geben? Oder ein JavaScript? Die Anleitung nutzt eine Kombination aus verschiedenen Online-Tools, was den Vorgang mühsam macht … Leider gibt es, wenn alles, was ich gelesen habe, stimmt, keine gute kostenlose Lösung (meldet euch bei mir, falls ihr etwas anderes wisst!). Noch schlimmer: Es gibt keine Möglichkeit, einen Termin automatisch zum iCloud-Kalender von Apple hinzuzufügen, außer durch den Import einer iCal-Datei (was viel manuelles Klicken erfordert).
Sowohl Google als auch Outlook akzeptieren Kalendertermin-Daten jedoch direkt in den GET-Abfrageparametern der Anfrage-URL (d. h. über einen einfachen HTML-Link oder einen Button, auf die man klicken kann). Es ist relativ einfach, Buttons in eine E-Mail einzufügen, die Google Kalender oder Outlook öffnen und die entsprechenden Kalenderfelder ausfüllen. Wie bereits erwähnt, unterstützt nur Apples iCal diese Funktion nach wie vor nicht, und eine Umgehungslösung besteht darin, eine iCal-Datei zum Herunterladen anzubieten, um sie in iCal zu importieren, obwohl dies voraussetzt, dass du diese Datei auf einem Server hast (Gdrive, OneDrive oder DropBox würden ebenfalls funktionieren).
Aber wie kann ich die Buttons (die wohl korrekt “Schaltflächen” auf Deutsch heissen) mit dem erforderlichen Code ganz einfach in Sekundenschnelle in eine E-Mail einfügen, während ich die E-Mail schreibe? Meine Antwort lautet: mit Espanso! Espanso ( https://espanso.org/ ) überwacht alle Ihre Tastenanschläge und löst bestimmte Ereignisse aus, wenn es bestimmte Kombinationen erkennt, die Sie frei definieren können. Ich habe die Buchstaben „\cal“ einem Skript zugewiesen, das ein Dialogfeld mit Feldern zur Eingabe von „Veranstaltung“, „Ort“, „Startdatum/-zeit“ und „Enddatum/-zeit“ öffnet und anschließend einen Button mit den korrekten Daten in meinen E-Mail-Client einfügt. Auch hier müssen Apple-Nutzer die .ical-Datei herunterladen und in iCalendar importieren. Leider ist das Erstellen der iCal-Datei und das Hochladen auf einen Server viel aufwendiger, als es sein sollte. Du kannst das Webtool von Amit Agarwal verwenden, um die Datei zu erstellen ( https://www.labnol.org/apps/calendar.html ), sie anschließend auf einen Server oder einen Dateifreigabedienst deiner Wahl hochladen und die URL notieren, um sie in das Espanso-Formular einzufügen. Relativ einfach – unter Linux oder Mac – ist es auch, die spontan generierte iCal-Datei per scp auf einen Server deiner Wahl hochzuladen, wie im folgenden Espanso-YAML-Konfigurationseintrag beschrieben. Beachte, dass der scp-Befehl eine passwortlose Authentifizierung verwendet, die du einrichten musst!
- trigger: "/cal"
vars:
- name: form
type: form
params:
layout: |
Veranstaltungstitel (verwende %20 für Leerzeichen): [[title]]
Ort (verwende %20 für Leerzeichen): [[loc]]
Datum (JJJJ-MM-TT): [[date]]
Startzeit (HH:MM): [[start]]
Endzeit (HH:MM): [[end]]
- name: gdate
type: shell
params:
cmd: "echo '{{form.date}}' | tr -d '-'"
- name: gstart
type: shell
params:
cmd: "echo '{{form.start}}' | tr -d ':'"
- name: gend
type: shell
params:
cmd: "echo '{{form.end}}' | tr -d ':'"
- name: ics_filename
type: shell
params:
cmd: |
FILENAME="event_{{gdate}}_{{gstart}}.ics"
TITLE_CLEAN=$(echo '{{form.title}}' | sed 's/%20/ /g')
LOC_CLEAN=$(echo '{{form.loc}}' | sed 's/%20/ /g')
# Die iCal-Datei lokal generieren
cat <<EOF > "/tmp/$FILENAME"
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//mjlab.fi//Espanso//EN
BEGIN:VEVENT
SUMMARY:$TITLE_CLEAN
DTSTART:{{gdate}}T{{gstart}}00
DTEND:{{gdate}}T{{gend}}00
LOCATION:$LOC_CLEAN
END:VEVENT
END:VCALENDAR
EOF
# Auf Ihren Server hochladen (Kommentar entfernen und Pfad/Benutzer entsprechend Ihrem Server anpassen)
scp /tmp/$FILENAME user@mjlab.fi:/var/www/mjlab.fi/iCal/$FILENAME > /dev/null 2>&1
echo "$FILENAME"
html: |
<html>
<body>
<style>
.addToCalendar_google { background-color: #bf3f3f; border-radius: 28px; border: 1px solid #8f0e0e; display: inline-block; cursor: pointer; color: #ffffff; font-family: Arial, sans-serif; font-size: 16px; padding: 6px 12px; text-decoration: none; text-shadow: 0px 1px 0px #441515; margin: 5px; }
.addToCalendar_windows { background-color: #4981c1; border-radius: 28px; border: 1px solid #100f4e; display: inline-block; cursor: pointer; color: #ffffff; font-family: Arial, sans-serif; font-size: 16px; padding: 6px 12px; text-decoration: none; text-shadow: 0px 1px 0px #273066; margin: 5px; }
.addToCalendar_apple { background-color: #8f8f8f; border-radius: 28px; border: 1px solid #2c302c; display: inline-block; cursor: pointer; color: #ffffff; font-family: Arial, sans-serif; font-size: 16px; padding: 6px 12px; text-decoration: none; text-shadow: 0px 1px 0px #080c07; margin: 5px; }
.addToCalendar_google img, .addToCalendar_windows img, .addToCalendar_apple img { Breite: 20px; Höhe: 20px; vertikale Ausrichtung: mittig; Rahmen: keiner; }
.addToCalendar_google span, .addToCalendar_windows span, .addToCalendar_apple span { vertikale Ausrichtung: mittig; Abstand links: 12px; }
</style>
<a href="https://calendar.google.com/calendar/render?action=TEMPLATE&text={{form.title}}&dates={{gdate}}T{{gstart}}00/{{gdate}}T{{gend}}00&location={{form.loc}}" class="addToCalendar_google">
<img src="https://mjlab.fi/iCal/google.png" alt="Google" width="20" height="20" style="margin-right: 6px; vertical-align: middle; border: none;" />
<span>Zum Google-Kalender hinzufügen</span>
</a>
<a href="https://outlook.office.com/calendar/0/action/compose?allday=false&subject={{form.title}}&startdt={{form.date}}T{{form.start}}:00&enddt={{form.date}}T{{form.end}}:00&location={{form.loc}}&path=%2Fcalendar%2Faction%2Fcompose&rru=addevent" class="addToCalendar_windows">
<img src="https://mjlab.fi/iCal/windows.png" alt="Outlook" width="20" height="20" style="margin-right: 6px; vertical-align: middle; border: none;" />
<span>Zu MS Outlook hinzufügen</span>
</a>
<a href="https://mjlab.fi/iCal/{{ics_filename}}" class="addToCalendar_apple">
<img src="https://mjlab.fi/iCal/apple.png" alt="Apple" width="20" height="20" style="margin-right: 6px; vertical-align: middle; border: none;" />
<span>Zu Apple hinzufügen (iCal-Datei)</span>
</a>
</body>
</html>