Abwesenheitsnotiz automatisch aus dem Kalender
Du trägst deine Ferien ohnehin in den Kalender ein. Dieser Flow liest den Termin und schaltet fünf Minuten vor Beginn die automatische Antwort von Outlook ein, mit dem richtigen Rückkehrdatum im Text. Am Termin setzt du nur zwei Dinge: «OoF» in den Betreff und «Anzeigen als: Abwesend».
Was du brauchst
- Ein Microsoft-365-Konto mit Outlook-Postfach (Exchange Online)
- Zugriff auf Power Automate (make.powerautomate.com)
- Keine Premium-Lizenz: Der Flow nutzt nur den Standard-Connector Office 365 Outlook
So funktioniert der Flow
- Der Trigger prüft regelmässig deinen Kalender (je nach Lizenz alle 1 bis 5 Minuten), ob in den nächsten 5 Minuten ein Termin beginnt.
- Zwei Trigger-Bedingungen lassen nur Termine durch, die «oof» im Betreff haben und als «Abwesend» angezeigt werden. Alle anderen Termine starten keinen Lauf.
- Der Flow rechnet das Terminende in deine Zeitzone um und setzt es als Rückkehrdatum in den Text.
- Ist der Termin noch nicht vorbei, schaltet er die automatische Antwort ein, intern und extern.
- Geht etwas schief, endet der Lauf als «Fehlgeschlagen» und Power Automate schickt dir die übliche Fehlermail.
Ausschalten machst du selbst, wenn du zurück bist. So bleibt die Antwort an, auch wenn du einen Tag länger weg bist.
Schritt für Schritt
1.Flow anlegen und Trigger wählen
- Öffne make.powerautomate.com und wähle Erstellen und dann Automatisierter Cloud-Flow.
- Name:
Autoreply aus OoF-Termin - Trigger: Wenn ein bevorstehendes Ereignis bald beginnt (V3) (englisch «When an upcoming event is starting soon (V3)») aus Office 365 Outlook.
- Kalender-ID: Wähle im Dropdown deinen Standardkalender, meistens «Kalender» oder «Calendar».
- Vorschauzeit (Look-Ahead Time):
5
Melde dich bei der Verbindung mit dem Konto an, dessen automatische Antwort der Flow schalten soll. Der Flow schaltet immer die Antwort des Kontos, dem die Verbindung gehört.
2.Trigger-Bedingungen setzen
Ohne diese Bedingungen würde jeder Termin einen Lauf auslösen. Klicke auf den Trigger, dann auf Einstellungen. Unter Triggerbedingungen fügst du zwei Zeilen hinzu:
@contains(toLower(coalesce(triggerBody()?['subject'], '')), 'oof')@equals(toLower(coalesce(triggerBody()?['showAs'], '')), 'oof')Die erste prüft den Betreff, egal ob «OoF», «OOF» oder «oof». Die zweite prüft «Anzeigen als: Abwesend»; im Kalender heisst dieser Wert intern oof. Beide müssen erfüllt sein. coalesce sorgt dafür, dass ein Termin ohne Betreff keinen Fehler auslöst.
3.Einstellungen an einem Ort sammeln
Alle Texte und Formate stehen in einer einzigen Aktion. Später änderst du nur noch diese.
- Neuer Schritt: JSON analysieren (Parse JSON) aus «Datenvorgänge». Benenne die Aktion in
Configum. - Bei Inhalt fügst du diesen Text ein und ersetzt
Vorname Nachnamein beiden Texten durch deinen Namen:
{
"internalMessage": "<p>Guten Tag</p><p>Ich bin derzeit abwesend und lese E-Mails nur eingeschränkt. Ab dem {rueckkehr} bin ich wieder für Sie da und melde mich dann bei Ihnen.</p><p>Freundliche Grüsse<br>Vorname Nachname</p>",
"externalMessage": "<p>Guten Tag</p><p>Ich bin derzeit abwesend und lese E-Mails nur eingeschränkt. Ab dem {rueckkehr} bin ich wieder für Sie da und melde mich dann bei Ihnen.</p><p>Freundliche Grüsse<br>Vorname Nachname</p>",
"externalAudience": "all",
"zeitzone": "W. Europe Standard Time",
"datumFormatGanztags": "dd.MM.yyyy",
"datumFormatMitZeit": "dd.MM.yyyy HH:mm"
}Beim Schema klickst du auf Beispielnutzlast zum Generieren eines Schemas verwenden und fügst denselben Text ein.
| Feld | Bedeutung |
|---|---|
internalMessage | Antwort an Absender aus deiner Organisation. {rueckkehr} ersetzt der Flow durch das Datum. |
externalMessage | Antwort an Absender von aussen. |
externalAudience | all = alle externen Absender, contactsOnly = nur deine Kontakte, none = keine externe Antwort. |
zeitzone | Zeitzone für das Rückkehrdatum. Für die Schweiz, Deutschland und Österreich: W. Europe Standard Time. |
datumFormatGanztags | Format bei ganztägigen Terminen, z. B. 31.10.2026. |
datumFormatMitZeit | Format bei Terminen mit Uhrzeit, z. B. 27.10.2026 12:45. |
4.Bereich «Try» anlegen
Neuer Schritt: Bereich (Scope) aus «Steuerelement». Benenne ihn in Try um. Die Aktionen aus Schritt 5 und 6 kommen in diesen Bereich.
5.Rückkehrdatum berechnen
Im Bereich Try: Verfassen (Compose) aus «Datenvorgänge», Name Rueckkehr. Bei Eingaben öffnest du den Ausdruckseditor (fx) und fügst ein:
if(coalesce(triggerBody()?['isAllDay'], false), formatDateTime(triggerBody()?['end'], body('Config')?['datumFormatGanztags']), formatDateTime(convertTimeZone(triggerBody()?['end'], 'UTC', body('Config')?['zeitzone']), body('Config')?['datumFormatMitZeit']))Der Trigger liefert das Terminende bei Terminen mit Uhrzeit in UTC. Ein Termin bis 12:45 Uhr kommt im Winter als 11:45 an, im Sommer als 10:45. convertTimeZone rechnet in deine Zeitzone um. Bei ganztägigen Terminen liefert der Trigger das Datum unverändert, darum rechnet der Ausdruck dort nicht um.
Das Ende eines ganztägigen Termins ist der Tag danach: Ferien vom 29. bis 30.10. enden am 31.10. um 00:00. Genau dieses Datum ist dein erster Arbeitstag, und genau das steht dann im Text.
6.Prüfen und automatische Antwort einschalten
- Im Bereich
Try, nachRueckkehr: Bedingung (Condition), NameTermin_noch_nicht_vorbei. - Links als Ausdruck:
ticks(coalesce(triggerBody()?['endWithTimeZone'], triggerBody()?['end'])), Operator ist grösser als, rechts als Ausdruck:ticks(utcNow()) - Im Zweig Wahr: Automatische Antworten einrichten (V2) (Set up automatic replies (V2)) aus Office 365 Outlook, Name
Autoreply_setzen:- Status:
alwaysEnabled - Externe Zielgruppe:
body('Config')?['externalAudience'] - Interne Antwortnachricht:
replace(body('Config')?['internalMessage'], '{rueckkehr}', outputs('Rueckkehr')) - Externe Antwortnachricht:
replace(body('Config')?['externalMessage'], '{rueckkehr}', outputs('Rueckkehr'))
- Status:
- Der Zweig Falsch bleibt leer.
Die Bedingung schützt dich vor einem Sonderfall: Trägst du eine Abwesenheit nachträglich ein, die schon vorbei ist, schaltet der Flow nichts ein.
7.Fehler sichtbar machen
- Unter
Try(nicht darin): neuer Bereich, NameCatch. - Bei
Catchüber die drei Punkte Ausführen nach konfigurieren: nur ist fehlgeschlagen und hat das Zeitlimit überschritten anhaken. - In
Catch: Beenden (Terminate), Status Fehlgeschlagen, CodeAutoreplyFailed, Meldung als Ausdruck:
concat('Abwesenheit konnte nicht gesetzt werden: ', string(result('Try')), ' | Run: https://make.powerautomate.com/environments/', workflow()?['tags']?['environmentName'], '/flows/', workflow()?['name'], '/runs/', workflow()?['run']?['name'])Der Bereich fängt jeden Fehler in Try ab und beendet den Lauf mit einer eigenen Meldung, die die Details und den Link zum Lauf enthält. Diese Meldung steht im Verlauf und in der Fehlermail von Power Automate. Speichere den Flow.
8.Testen
- Lege in Outlook einen Termin an, der in etwa 8 Minuten beginnt: Betreff
OoF Test, Anzeigen als: Abwesend, Ende z. B. in einer Stunde. Lade niemanden ein. - Warte, bis im Verlauf des Flows ein Lauf erscheint, je nach Lizenz nach bis zu 5 Minuten.
- Öffne den Lauf und prüfe die Ausgabe von
Rueckkehr: Steht dort die Endzeit deines Termins in deiner Ortszeit? - Prüfe in Outlook unter Einstellungen, Konten, Automatische Antworten, ob der Text stimmt.
- Schalte die automatische Antwort wieder aus und lösche den Testtermin.
Nutzt du schon eine automatische Antwort mit eigenem Text, kopiere ihn vor dem Test heraus. Der Flow überschreibt ihn.
Typische Fehler
- Kein Lauf im Verlauf
- «Anzeigen als» steht nicht auf «Abwesend» oder «oof» fehlt im Betreff. Die Trigger-Bedingungen filtern solche Termine ohne Lauf und ohne Fehler weg.
- Kein Lauf, obwohl alles stimmt
- Der Termin beginnt in weniger als 5 Minuten, bevor der Trigger ihn abfragt, oder liegt in der Vergangenheit. Lege einen neuen Termin mit Beginn in 8 bis 10 Minuten an.
- Rückkehrzeit eine oder zwei Stunden zu früh
- Das Terminende wurde ohne Umrechnung formatiert. Nimm den Ausdruck aus Schritt 5 mit convertTimeZone.
- Fehler «convertFromUtc expects ... UTC date time»
- convertFromUtc verlangt ein Z am Ende der Zeit, der Trigger liefert keines. Nimm convertTimeZone(..., 'UTC', ...).
- Rückkehrdatum bei Ferien einen Tag «zu spät»
- Kein Fehler: Das Ende eines ganztägigen Termins ist der erste Tag danach. Darum lautet der Text «Ab dem ... bin ich wieder für Sie da».
- Antwort im falschen Postfach
- Die Verbindung gehört einem anderen Konto. Stell die Outlook-Verbindung im Flow auf dein eigenes Konto.
- Umlaute kaputt («für»)
- Der Text kam aus einer Datei mit falscher Kodierung. Tipp ihn direkt im Designer ein.
Variante: Die Antwort schaltet sich selbst aus
Willst du nicht selbst ausschalten, stellst du in Autoreply_setzen den Status auf scheduled und setzt Startzeit und Endzeit aus dem Trigger. Dann endet die Antwort mit dem Termin. Bist du länger weg als geplant, ist sie dann allerdings schon aus.
Lieber importieren als selbst bauen?
Diesen Flow gibt es auch als fertige Vorlage zum Importieren, als Lösung mit Verbindungsreferenz und einer Umgebungsvariable für den Kalender. Nach dem Import wählst du deine Outlook-Verbindung, ergänzt deinen Namen im Text und schaltest den Flow ein. Die Vorlage ist gratis, wir schicken sie dir per Mail: Vorlage anfordern.
Vorlage per Mail anfordern
Trag Vorname und E-Mail ein, dann kommt die fertige Lösung als Zip-Datei in dein Postfach, mit Link zu dieser Anleitung.
Für das ganze Team: Ferien und Abwesenheitsnotiz in einem
Ferien, Saldo und Abwesenheitsnotiz in einer App für das ganze Team. Die Vorlage Abwesenheiten Plus gibt es ab CHF 399, auf Wunsch mit Einrichtung: Grössere Pakete auf kmupower.com/vorlagen.
Das lernst du in der Power Automate Schulung.