Krankmeldungen automatisieren (O365)

In diesem Artikel beschreibe ich wie man automatisiert (per Power Automate) Emails verschicken kann.

Krankmeldungen automatisieren (O365)

Ich automatisiere sehr gerne, immer wieder kehrende Tasks sollten automatisiert werden, das ist einer meiner Mottos. IFTT, Zapier, n8n oder Power Automate (ehemals Microsoft Flow) können unser Leben bei der Automatisierung deutlich erleichtern. Diese Ereignis gebundenen Automatisierungs-Tools haben alle ihre Vor- und Nachteile, auf diese werde hier nicht eingehen. Ich hatte aktuell einen Fall, den ich relativ einfach automatisieren konnte. Der Fall ist an sich für die IT-Gemeinde nicht von Belang, dieser Beitrag ziehlt daher auf weniger versierte und unerfahrene Anwender (Eltern) ab.

Der Fall - UseCase

Mein großer ist seit Spetember (2020) als Erstklässler in der Schule. Jeder der 2020 miterleben kann, weiss dass es ein schwieriges und aussergewöhnliches Jahr ist. 2020 steht unter dem Covid-19 Schatten, so auch die Schulen.

Die Schule ist eine Institution, für mich immer mit einem Gebäude verbunden, so eine Schule umfasst aber mehr als den reinen Backstein aus dem dieser Gebaut wurde. Hausmeister, Verwaltung, Lehrer, Schüler und eben auch die Eltern. Zu den letzteren zählen wir mittlerweile auch dazu.

Die Schule möchte bei Krankheitsfällen darüber verständlicherweise informiert werden. Eines der ersten Dokumente, welches vom Elternbeirat geteilt wurde, beinhaltete diese Informationen. Es werden die üblichen Wege über Telefon, Fax und Email angeboten. Wobei bei letzterem - also Email - ein bevorzugt als Zusatz Info/Bitte notiert wurde.

Wir hatten nun den Fall einer Krankheit, also mussten Mama und Papa dies melden. In diesem Fall öffnete ich meine Mail-App auf meinem Smartphone, wollte den Empfänger eingeben... hier fingen nun die Probleme an. Unten beschreibe ich die Schritte, die von mir nötig waren um diese doch so einfache Email zu verschicken.

  • Email-App öffnen
  • Empfänger eingeben (diese Information fehlte)
    • Suche nach Empfänger --> nicht abgespeichert
    • Suche nach Dokument welches vom Elternbeirat geteilt wurde.
    • in Whatsapp gefunden, öffnen in PDF Viewer
    • Rauskopieren der Email-Adresse
    • einfügen der Email-Adresse
  • Einfügen Betreff: Krankmeldung '[Vorname Nachname]' Klasse '1x'
  • Einfügen Body/Text
  • Senden

Viel zu viel Zeit verloren, ich wusste dass es auch einfacher geht. Bei meinem Arbeitgeber ist es ähnlich bei Krankmeldungen, ich muss einen Verteiler anschreiben. Dafür habe ich seit längerem einen Flow der mit einem Klick in der App genau das macht. Nun wollte ich das auch für die Krankmeldungen von unserem Sohnemann einrichten.

Was wird benötigt

In der Regel können bei dieser Anforderung alle oben bereits genannten und auch andere Automation-Tools verwendet werden. In diesem Fall werde ich Power Automate (Flow) verwenden. Schüler an der besagten Schule haben ein M365 Education Abo, da ist Flow in der Standard Version bereits vorhanden. Hier nochmal was benötigt wird:

Übersicht Flow

Power Automate aufrufen

Wie kommt man zu den Flows? Das ist ganz einfach, nach dem einloggen in M365 (in der Auflistung oben, steht die jeweilige Seite für den jeweiligen Typ des Abos) gelangt man auf eine Seite, wo alle verfügbaren M365 Apps angezeigt werden.

M365 Apps

Nach dem Klicken auf Power Automate gelangt man nun auf die Verwaltungsoberfläche. Die aktuellen Flows erreicht man, indem links in der Navigation Meine Flows ausgewählt wurde.

Der Flow

An dieser Stelle hat man nun die Möglichkeit, den besagten Flow Schritt für Schritt wie in diesem Beitrag dargestellt zu erstellen, oder eine bestehende Version zu importieren und nur die benötigten Informationen anzupassen. Für den letzteren Fall habe ich für einen gewissen Kreis (Eltern aus der Klasse vom Sohnemann) ein Paket bereitgestellt, welches heruntergeladen und über die Import Funktion importiert werden kann. Für den Import kann mit dem Spezieller Flow Abschnitt weitergemacht werden.

Wenn wir nun oben auf New klicken erscheint eine Auswahl aus möglichen Triggern und Vordefinierten Vorlagen für den neuen Flow. Wir wählen hier Instance (im deutschen Sofort) aus.
Flow-Trigger-Selection

Der Flow Trigger 'Sofort'

Solang unsere Kinder keinen Bio-Health-Tracker als Implantat eingepflanzt bekommen haben, wird es ein manuell Angestoßenes Ereignis sein. Hierfür bietet Flow einen Trigger mit Schlatfächen, die z.B. von der Flow-App heraus direkt per klick angestoßen werden können. Die App ist sowohl im Play als auch im App Store vorhanden.

Flow App (Android)

Das ist der sogenannte Instant/Sofort Trigger, erstellt man einen Flow mit diesem Trigger, erscheint z.B. in der mobilen App dann ein Button mit dem Flow-Titel.

Trigger Auswahl und Name des Flow

Nachdem wir den Trigger ausgewählt haben, erscheint eine weitere Eingabemaske. Hier vergebene wir nun den Flow Namen und wählen Manual trigger flow (in deutsch: Löst einen Flow manuell aus) aus und klicken unten auf Create.

Die Actions

Nachdem unser Trigger konfiguriert wurde, können wir mit den auszuführenden Aktionen fortfahren. Als erstes definieren wir unsere Variablen, dafür verwenden wir die Variable Action. Um einen neuen Schritt in der Abarbeitung hinzuzufügen, klicken wir auf + New step (+ neuer Schritt) und Suchen in der Search-Box nach Variable. In der unten angezeigten Auswahl wählen wir die Initialize Variable Action aus. Zusätzlich werden wir Send an email (V2) Action von der Micorosft Outlook Integration verwenden.

Neue Variable erstellen

Die Variablen

Wir werden Variablen für unseren Flow verwenden, die Erstellung der folgenden Variablen ist immer gleich, nur die Variablennamen und Werte unterscheiden sich. Daher werde ich den Weg für das Hinzufügen einer Variable nur einmal beschreiben, den Rest der Eingaben können aus der folgenden Tabelle eingesehen werden. Einzig die Ermittlung des heutigen Datums mus gesondert behandelt werden, dazu aber weiter unten mehr.

Variablen:

Name Typ Wert
Empfänger: Email String/Zeichenfolge empfänger Email (z.B. info@schule.de)
Kind: Name String/Zeichenfolge Vollständiger Name vom Kind (z.B. Hans Muster)
Kind: Klasse String/Zeichenfolge Klasse vom Kind (z.B. 2C)
Eltern: Email String/Zeichenfolge Email der Eltern (z.B. klaus@muster.de;uschi@muster.de)
Eltern: Info String/Zeichenfolge Kontaktinfo (z.B. Tel, Mail etc.)
Datum: Heute String/Zeichenfolge wird gesondert behandelt, weiter unten

Heutiges Datum:
Das hinzufügen dieser Variable ist analog zu den anderen, der einzige Unteschied an dieser Stelle ist der, dass wir als Wert keine statische Zeichenfolge (string) eingeben sondern, eine Formel als Expression (Ausdruck). Nachdem die Action (Initialize Variable) ausgewählt wird, können der Name eingegeben und Typ ausgewählt werden.

Beim klicken in die Wert (Value) Spalte, poppt in der Regel ein neues Fenster auf.

Hier muss nun auf Expression (Ausdruck) geklickt und die unten angegebene Fformel eingegeben werden.

formatDateTime(triggerOutputs()['headers']['x-ms-user-timestamp'], 'dd.MM.yyyy')

Nach Bestätigen mit Ok wird nun die Formel als Wert gesetzt.

Was passiert hier? Das ist ganz einfach erklärt. Wir bekommen über die Umgebungsvariablen bereits vordefinierte Werte, einer Davon ist der Zeitstempel, der beim Anstoßen des Flows erstellt wird, dieser ist aber in einem schlecht leserlichen Format. Mit der aufgeführten Formel erstellen wir ein besser leslicheres Format (Tag.Monat.Jahr --> Beispiel: 05.12.2023) für die menschlichen Augen.

Wir schicken eine Mail

Jetzt kommen wir zu unserer finalen Aktion, das verschicken der Email. Dafür werden wir die Send an Email (V2) Aktion verwenden.
Flow-Send-Email-001-2

Um alle benötigten Werte setzen zu können, müssen wir alle Optionen einblenden.
Flow-Send-Email-002-1

Folgender Inhalt muss in Felder von der Action eingefügt werden, Subject und Body werden wir gesondert behandeln, da hier inline Expressions (Ausdrücke) verwendet werden.
Bei allen anderen Feldern können die bereits definierten Variablen verwendet werden. Beim klicken in ein Feld, wird das bereits bei der Datums-Erstellung bekannte Fenster eingeblendet (falls nicht, kann auf add dynamic content unterhalb von jedem Feld geklickt werden).

Feld Typ des Inhalts Wert
To / An Variable Empfänger: Email
Subject / Betreff Dynamisch siehe Variablen in Text
Body / Text Dynamisch siehe Variablen in Text
CC Variable Eltern: Email

Variablen im Text

Sofern in einen von den Subject oder Body Feldern geklickt wird, kann nun statischer Text mit den Variablen - dynmischer Inhalt - gemischt werden. Unten sind Beispiel-Texte für den Betreff und Inhalt der Email. Dieser kann kopiert und in die jeweiligen Felder eingefügt werden. Die Stellen mit den Variabeln (z.B. @{variables('Kind: Name')}) müssten nun per Maus selektiert werden, anschließend müsste die Variable aus dem dynmischen Inhalt popup ausgewählt werden.

Betreff

Krankmeldung @{variables('Kind: Name')} Klasse @{variables('Kind: Klasse')}

Inhalt

Hallo Liebes Sekretariat,

leider müssen wir '@{variables('Kind: Name')}' - Klasse '@{variables('Kind: Klasse')}' - für heute (@{variables('Datum: Heute')}) krankmelden.

Mit freundlichen Grüßen,
------------------------------------------------
@{variables('Eltern: Info')}

Das war es nun auch mit dem Allgemeinen Part, die Flow-Vorlage für diesen Fall kann hier heruntergeladen werden. Nach dem Import müssen die Variablen - außer Datum: Heute - angepasst werden.

Spezieller Flow

Dieser Abschnitt ist für eine special audience :) ... Für die Eltern von den Klassenkameraden von meinem Sohn habe ich ein anderes Paket erstellt. Grundsätzlich könnten die Eltern den weiter oben beschriebenen Weg gehen und alles selber implementieren oder das allgemeine Paket verwenden.

Der Vorteil des gesonderten Pakets ist der, dass die Eltern nach dem Import nur die contactInfo und mailOfParents Variablen anpassen müssen. Der Rest wird über das User Profile ermittelt (Name und Klasse vom Kind). Daher muss vor dem Importieren die "Office 365 User" Verbindung / Connection eingerichtet werden.
Flow-Special-001

Dafür wählt man nun link in der Navigation Connections unterhalb von Data aus. Hier werden alle bereits existierenden Verbindungen angezeigt.
Flow-Special-002

Durch Auswählen von new Connection gelangt man nun auf eine neue Seite mit einer Auflistung von verfügbaren Diensten. Wir können nun über die Suche - rechts oben - diese Liste filtern.
Flow-Special-003

Nachdem wir auf den add Button (das Plus (+) Zeichen) geklickt haben, öffnet nun eine weitere Maske, hier reicht es Create anzuklicken. Im Hintergrund wird die Verbindung angelegt. Diese Verbindung brauchen wir um an Informationen wie Klasse, Name etc. zu kommen.
Flow-Special-004

Anschließend kann das Paket nun über das Import-Menü unter Meine Flows importiert werden.