Krankmeldungen automatisieren (O365)

calendar_month 1. Dezember 2020 24 Wörter

Ich automatisiere sehr gerne – immer wieder kehrende Tasks sollten automatisiert werden, das ist einer meiner Mottos. IFTTT, Zapier, n8n oder Power Automate (ehemals Microsoft Flow) können unser Leben bei der Automatisierung deutlich erleichtern. Diese ereignisbasierten 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 zielt daher auf weniger versierte und unerfahrene Anwender (Eltern) ab.

Der Fall – UseCase

Mein Großer ist seit September (2020) als Erstklässler in der Schule. Jeder, der 2020 miterleben konnte, weiß dass es ein schwieriges und außergewö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 diese 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 E-Mail angeboten. Wobei bei letzterem – also E-Mail – ein „bevorzugt als Zusatzinfo/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 E-Mail zu verschicken:

  1. Email-App öffnen
  2. Empfänger eingeben (diese Information fehlte)
  3. Suche nach Empfänger → nicht abgespeichert
  4. Suche nach Dokument, welches vom Elternbeirat geteilt wurde
  5. In WhatsApp gefunden, öffnen in PDF Viewer
  6. Rauskopieren der E-Mail-Adresse
  7. Einfügen der E-Mail-Adresse
  8. Einfügen Betreff: Krankmeldung '[Vorname Nachname]' Klasse '1x'
  9. Einfügen Body/Text
  10. 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 Automatisierungs-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.

Was benötigt wird:

  • M365 Konto (kann auch von einer M365 Single/Family Subscription sein)
  • Empfänger-E-Mail
  • E-Mail von den Eltern

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.

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.

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 „Instant” (im Deutschen „Sofort”) aus.

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 Schaltflä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.

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.

Nachdem wir den Trigger ausgewählt haben, erscheint eine weitere Eingabemaske. Hier vergeben wir nun den Flow-Namen und wählen „Manual trigger flow” (auf 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” 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 die „Send an email (V2)“-Action von der Microsoft Outlook-Integration verwenden.

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.

Variablen:

NameTypWert
Empfänger: EmailStringempfänger Email (z.B. info@schule.de)
Kind: NameStringVollständiger Name vom Kind (z.B. Hans Muster)
Kind: KlasseStringKlasse vom Kind (z.B. 2C)
Eltern: EmailStringE-Mail der Eltern (z.B. klaus@muster.de; uschi@muster.de)
Eltern: InfoStringKontaktinfo (z.B. Tel, Mail etc.)
Datum: HeuteStringwird gesondert behandelt, weiter unten

Heutiges Datum:

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

Beim Klicken in die „Value”-Spalte poppt in der Regel ein neues Fenster auf. Hier muss nun auf „Expression” geklickt und die unten angegebene Formel 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 leserliches Format (Tag.Monat.Jahr, z.B. 05.12.2023) für die menschlichen Augen.

Wir schicken eine Mail

Jetzt kommen wir zu unserer finalen Aktion: das Verschicken der E-Mail. Dafür werden wir die „Send an Email (V2)“-Aktion verwenden.

Um alle benötigten Werte setzen zu können, müssen wir alle Optionen einblenden.

Folgender Inhalt muss in Felder von der Action eingefügt werden. Subject und Body werden wir gesondert behandeln, da hier inline Expressions verwendet werden. Bei allen anderen Feldern können die bereits definierten Variablen verwendet werden.

FeldTyp des InhaltsWert
To / AnVariableEmpfänger: Email
Subject / BetreffDynamischSiehe Variablen in Text
Body / TextDynamischSiehe Variablen in Text
CCVariableEltern: Email

Variablen im Text

Sofern in eins von den Subject- oder Body-Feldern geklickt wird, kann nun statischer Text mit den Variablen gemischt werden. Unten sind Beispiel-Texte für den Betreff und Inhalt der E-Mail. Dieser kann kopiert und in die jeweiligen Felder eingefügt werden. Die Stellen mit den Variablen (z.B. @{variables('Kind: Name')}) müssten nun per Maus selektiert und anschließend die Variable aus dem dynamischen 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 eingerichtet werden.

Dafür wählt man nun links in der Navigation „Connections” unterhalb von „Data” aus. Hier werden alle bereits existierenden Verbindungen angezeigt.

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 diese Liste filtern.

Nachdem wir auf den Add-Button 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.

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