Beiträge

Microsoft Flow: Automatisierte Workflows

Als Selbstständiger nutze ich Google G Suite und Office 365. Bisher war es eine Herausforderung, die Kalender aus den beiden Welten abzugleichen. Mit Microsoft Flow habe ich ein Lösung gefunden, um Kalender zwischen Office 365 und Google zu synchronisieren.

Für manche Dinge eignet sich die G Suite besser, für manche Dinge Office 365. Ich bin in beiden Welten unterwegs. Doch insbesondere, wenn es um Terminanfragen und Online-Meetings mit Hangouts Meet, Microsoft Teams oder Skype for Business geht, musste ich immer wieder beide Kalenderwelten abgleichen. Wenn ich einem Kunden eine Besprechungsanfrage mit Microsoft Teams schicke, dann ist sie natürlich in meinem Office 365-Kalender, ebenso wenn ich eine Teams Besprechung des Kunden zusage. Bei Hangouts Meet ist der Termin im Google Kalender.

Google-Kalender und Office 365-Kalender

Wenn ich eine Besprechungsanfrage sende, dann schaue ich in beiden Kalendern nach, wann ich Zeit haben werde. Kommt die Anfrage eines Kunden, dann sieht er eventuell sogar meine Verfügbarkeit aus der einen Kalenderwelt, aber nicht die in der anderen. Meine primäre Kalenderwelt liegt in der G Suite, für Terminkoordinationen in der Office 365-Welt habe ich dort nachgesehen. Und wenn ich in Google einen Termin mache, kann ich einen eingebundenen Office 365-Terminkalender sehen.

Die Google-Kalender sind einfach praktisch. Schnell und einfach ist ein weiterer Kalender erstellt, abonniert oder geteilt. Mit meiner Frau habe ich einen gemeinsamen Kalender für gemeinsame Termine. Sie kann jedoch jederzeit in meine Termine schauen, und ich in ihre Termine. Das funktioniert mit beliebigen Kalendern und Nutzern. Aus Google heraus kann ich sehr schnell und einfach eine Kalenderansicht erzeugen, in der mehrere Kalender „übereinandergelegt“ sind. Die kann ich dann öffentlich stellen, und jeder sieht meine Verfügbarkeit unabhänig vom einzelnen Kalender.

In Office 365 ist das … komplizierter. Die Kalender der Office 365-Welt sind ebenso wie E-Mails eine Exchange-Erbe. In großen Unternehmen war Exchange dafür die beherrschende Serverplattform. Früher, damals war der Anspruch, möglichst wenig aus der Unternehmenswelt herauszulassen. Inzwischen lässt sich ein persönlicher Kalender sogar per URL teilen. Doch wenn ich mehrere persönliche Kalender habe, dann wird immer nur der persönliche Hauptkalender für Verfügbarkeitszeiten herangezogen.

Das reduziert dann beispielsweise in vielen Fällen den Einsatz von Microsoft Bookings. Mit Microsoft Bookings können Kunden einen Zeit-Slot eines Mitarbeiters buchen, sogar gegen Geld. Dabei kann die Verfügbarkeit des persönlichen Hauptkalenders berücksichtigt werden. Will Kunde A also den Mitarbeiter B mittwochs um 17 Uhr buchen, und der Mitarbeiter hat dann einen Termin (beispielsweise eine Besprechung mit dem Chef) dann ist der Slot nicht verfügbar. Doch wenn der Mitarbeiter mehrere persönliche Kalender pflegt, dann wird nur der Hauptkalender berücksichtigt. Oft pflegen Mitarbeiter aber noch einen zweiten oder dritten Kalender, wo sie andere, beispielsweise private Termine eintragen. Mit verschiedenen Kalendern bei Google funktioniert das bei mir sehr einfach.

Doch ich nutze eben auch einen (einen?) Office 365-Kalender. Ein manueller Abgleich oder jedes Mal dort oder dort nachzuschauen ist aufwändig und fehleranfällig.

Es gibt Lösungen wie gSyncit für Windows, doch dazu muss eine lokale Software auf dem Rechner installiert sein. Die muss dann regelmäßig synchronsieren, also im Tray laufen. Und fast genauso häufig muss sie (zumindest gefühlt) aktualisiert werden.

Gäbe es eine vernünftige Möglichkeit, die beiden Kalendewelten zu synchronisieren, wäre das echt super.

Microsoft Flow

Und hier kommt Microsoft Flow ins Spiel.

Microsoft Flow: Automatisierte Workflows

Microsoft Flow: Automatisierte Workflows

 

Erstellen Sie automatisierte Workflows zwischen Ihren bevorzugten Apps und Diensten, um Benachrichtigungen zu erhalten, Dateien zu synchronisieren, Daten zu erfassen und viele weitere Aufgaben auszuführen.

Am einfachsten vergleichbar ist Microsoft Flow mit IFTTT oder Zapier. Doch Flow kann noch wesentlich mehr als einfache Aktionen. Inzwischen gibt es dort sehr viele „Connectors“ für unterschiedliche Dritt-Dienste. Ganze Workflows lassen sich so durch Trigger abbilden, inklusive Bedingungen und Schleifen. Wer möchte, kann seine Flows jenseits der visuellen Oberfläche für die Abläufe, Bedingungen und Schleifen durch Funktionen und Ausdrücke vertiefen.

Microsoft Flow gibt es in verschiedenen Tarifen

  • Free: 750 Ausführungen pro Monat/Nutzer, minimal alle 15 Minuten, kein Service Level Agreement.
  • Flow for Office 365 and Flow for Dynamics 365: 2.000 Ausführungen pro Monat/Nutzer, minimal alle 5 Minuten, Service Level Agreement (99,9%).
  • Flow Tarif 1 für 5 USD pro Monat/Nutzer: 4.500 Ausführungen pro Monat/Nutzer, minimal alle 3 Minuten, Service Level Agreement (99,9%).
  • Flow-Tarif 2 für 15 USD pro Monat/Nutzer: 15.000 Ausführungen pro Monat/Nutzer, minimal alle 1 Minuten, Service Level Agreement (99,9%).

Die weiteren Unterschiede und weitere Informationen gibt es auf der Tarif-Seite von Microsoft Flow.

Inzwischen probiere ich Flows aus und versuche, sie gegebenenfalls anzupassen.

Microsoft Flow: Meine Workflows

Microsoft Flow: Meine Workflows

Mit zwei meiner Flows synchronisiere ich meine Google-Kalender und meinen persönlichen Office 365-Kalender.

1. Flow: Google-Termine zum Office 365-Kalender kopieren

Microsoft Flow: Gmail-Kalender nach Office 365 kopieren

Microsoft Flow: Gmail-Kalender nach Office 365 kopieren

Ich habe die Flow-Vorlage „Google Kalender mit Office 365-Kalender synchronisieren“ mit eigenen Definitionen kombiniert.

Hiermit wird jedes Mal, wenn Sie einen Termin in Ihrem Google Kalender hinzufügen, aktualisieren oder löschen, dieser automatisch in Ihren Office 365-Kalender kopiert. Hinweis: Dies ist eine einseitige Synchronisierung, d. h. Änderungen an Ihrem Office 365-Kalender werden nicht mit Google synchronisiert. Darüber hinaus werden Terminserien in Ihrem Office 365-Kalender als individuelle Termine angezeigt.

Mein Flow kopiert zwei Mal täglich alle Termineinträge („Wiederholung“) für die nächsten 30 Tage von meinem persönlichen Google-Kalender sowie einem mit meiner Frau gemeinsamen Google-Kalender in meinen Office 365-Kalender. Beim nächsten Durchlauf des Flows werden zuvor Einträge aus dem letzten Durchlauf gelöscht.

Microsoft Flow: Gmail-Kalender nach Office 365 kopieren (Ablauf)

Microsoft Flow: Gmail-Kalender nach Office 365 kopieren (Ablauf)

 

Die Termine aus den Google-Kalender versehe ich beim Eintragen in den Office 365-Kalender mit einem Präfix, damit ich sie beim Löschen unterscheiden kann und ich sie beim Blick auf den Office 365-Kalender auf Anhieb erkennen kann.

Mein Setting sieht in einer vereinfachten Darstellung so aus:

  • Google: Ein persönlicher Kalender („Frank-Hamm“).
  • Google: Ein gemeinsamer Kalender mit meiner Frau („MuF“ für „Manuela und Frank“).
  • Office 365: Ein persönlicher Kalender.

Daneben habe ich noch weitere Kalender, die ich hier jedoch auslasse.

Der Flow macht Folgendes:

  • Zunächst werden bereits vorhandene Google-Kalender-Einträge in meinen Office 365-Kalender gelöscht. Sie werden dabei an dem Präfix „[GS-“ erkannt, wobei GS für „G Suite“ steht.
  • Anschließend werden alle Einträge meines persönlichen Google-Kalenders und meines gemeinsamen Google-Kalenders für die nächsten 28 Tage in meinen persönlichen Office 365-Kalender kopiert.
  • Die neuen Einträge erhalten je nach Kalenderursprung einen Präfix: „[GS-Frank-Hamm]“ für Einträge aus meinem persönlichen Google-Kalender und „[GS-MuF]“ für Einträge aus dem gemeinsamen Google-Kalender.
Microsoft Flow: Gmail-Kalender nach Office 365 kopieren - erweitert, mit Filter

Microsoft Flow: Gmail-Kalender nach Office 365 kopieren – erweitert, mit Filter

Microsoft Flow: Gmail-Kalender nach Office 365 - getFutureTime(28, 'Day')

Microsoft Flow: Gmail-Kalender nach Office 365 – getFutureTime(28, ‚Day‘)

Microsoft Flow: Office 365-Termin erstellen

Microsoft Flow: Office 365-Termin erstellen

Damit habe ich ein Zeitfenster von vier Wochen in der Zukunft, in dem ich beziehungsweise andere bei Office 365 (z.B. bei Bookings) Terminbelegungen sehe beziehungsweise sehen – und zwar unabhängig davon, ob der Termin in Office 365 oder in der G Suite gepflegt wird. Von Synchronisierung zu Synchronisierung gibt es eine Unschärfe, falls ich in der Zwischenzeit einen Termin in Google angelegt habe. Das nehme ich aber als nahezu vernachlässigbar hin.

Das sich wiederholende Löschen und Kopieren ist umständlich. Ein Abgleich in diese Richtung lässt sich jedoch nur dadurch lösen. Denn es gibt keinen Trigger für Änderungen in Google-Kalendern, nach denen Termine aus Google heraus mit Office 365 synchronisiert werden können.

2. Flow: Office 365-Termine mit Google synchronisieren

In der umgekehrten Richtung gibt es einen Trigger. Den nutzt die Vorlage „Office 365-Kalender mit Google Kalender synchronisieren„.

Hiermit wird jedes Mal, wenn Sie einen Termin in Ihrem Office 365-Kalender hinzufügen, aktualisieren oder löschen, dieser automatisch in Ihren Google-Kalender kopiert. Hinweis: Dies ist eine einseitige Synchronisierung, d. h. Änderungen an Ihrem Google Kalender werden nicht mit Office 365 synchronisiert. Darüber hinaus werden Terminserien in Ihrem Google Kalender als individuelle Termine angezeigt.

Der Trigger wird automatisch ausgelöst, so dass anschließend der Flow einen neuen Office 365-Termin in Google anlegt, einen geänderten Office 365-Termin in Google ändert und einen gelöschten Office 365-Termin in Google löscht.

Microsoft Flow: Office 365-Kalender mit Gmail-Kalender synchronisieren (neu, geändert, gelöscht)

Microsoft Flow: Office 365-Kalender mit Gmail-Kalender synchronisieren (neu, geändert, gelöscht)

Die Erkennung, ob ein Termin in Google bereits existiert, wird über eine Termin-ID gelöst. Diese ID aus Office 365 wird beim Anlegen eines Google-Termins mitkopiert. Wird ein Termin in Office 365 gelöscht, wird er in Google gesucht und gelöscht. Bei einer Änderung wird er in Google nur geändert.

Leider ist es mir nicht gelungen, bereits mit dem Trigger oder kurz danach zu erkennen, ob es sich um einen Termin aus dem Google-Kalender „Frank-Hamm“ oder „MuF“ handelt. Doch im Ablauf konnte ich später irgendwann eine Bedingung einfügen. Sie prüft ab, ob der Betreff / der Titel des Termins mit „[GS-…“ beginnt. Falls ja, wir der Termin ignoriert.

Bei der Anlage eines Termins bekommt der Titel den Präfix „[FHKuK]“.

Hier kann ich es mir einfacher machen, denn ich synchronisiere den Office 365-Kalender in einen eigenen Google-Kalender („FHKuK“). Termine aus diesem Kalender werden genauso wie die im mit meiner Frau gemeinsamen Kalender bei der Abfrage von Verfügbarkeiten (beispielsweise mit Doodle MeetMe) berücksichtigt.

Meine Kalendereinträge in beiden Kalendern

Und so sehen die Termineinträge in Google aus (Kalender „Frank-Hamm“: Dunkelblau; Kalender „MuF“: Hellblau; Kalender „FHKuK“: Grün):

Microsoft Flow: Gmail-Kalender - mit synchronisierten [FHKuk] Terminen

Microsoft Flow: Gmail-Kalender – mit synchronisierten [FHKuk] Terminen

In Office 365 habe ich nur meinen persönlichen Kalender eingeblendet. Termine, die durch den 1. Flow aus Google nach Office 365 kopiert wurden, haben einen entsprechenden Präfix („[GS-Frank-Hamm]“ beziehungsweise „GS-MuF“).

Microsoft Flow: Office 365-Kalender, mit kopierten "[GS-..." Terminen

Microsoft Flow: Office 365-Kalender, mit kopierten „[GS-…“ Terminen

Somit habe ich alle Termine in beiden Welten. Möglicherweise erhöhe ich die Frequenz des 1. Flows noch, doch zunächst reicht es mir. Obwohl ich ja eigentlich 2.000 Ausführungen im Monat frei habe…