Easy Directory 2.0
Easy Directory 2.0 - entdecke die neuen Funktionen & Verbesserungen Wir freuen uns, dir die neueste Version von Easy Directory präsentieren zu dürfen! Diese ...
Automatisierung von SharePoint mit Power Automate – Die Basics: Mit Flow hat uns Microsoft ein mächtiges Werkzeug zur Verfügung gestellt. Es passt hervorragend zu unserem Motto «do more, work less». In diesem Beitrag möchte ich über die Erfahrungen beim Erstellen eines Flows schreiben.
Seit Kurzem verwenden wir intern eine SharePoint Communication Site (sehr empfehlenswert!), auf welchem unter anderem ein «News»-Webpart eingebaut ist. Die Geschäftsleitung möchte dort News publizieren, welche firmenweit von Interesse sind. Dies funktioniert soweit auch prima, nur gibt es keine Möglichkeit, diese News auch in Microsoft Teams anzeigen zu lassen.
Somit muss sich die Geschäftsleitung darauf verlassen, dass die Mitarbeiter regelmässig auf die SharePoint Site schauen und nach News Ausschau halten, was erfahrungsgemäss ziemlich sicher nicht geschehen wird. 😉
Mit Flow sollte es möglich sein, nach der Erstellung eines Elements automatisch eine Nachricht an das Team in Microsoft Teams zu senden. Die Connectoren dafür sind vorhanden, es müssen somit nur die Reihenfolge und die richtigen Felder definiert werden.
Dies ist, wie sich herausgestellt hat, gar nicht so einfach zu bewerkstelligen. Der Ablauf sollte so aussehen:
Zum News-Beitrag: Auf den ersten Blick unterscheidet SharePoint nicht zwischen einer normalen Page und einem News-Beitrag. Für unseren Flow bedeutet das, dass wir eine Möglichkeit suchen müssen, um zwischen einer Page und einem News-Beitrag zu unterscheiden. Denn wir möchten das Team nur dann informieren, wenn es Neuigkeiten gibt. Eine Webrecherche hat ergeben, dass sich «News» durch das Vorhandensein von zwei Feldern von Pages unterscheiden:
Mit «Promoted State» kann gesagt werden, ob es sich bei einer Page um eine «News» handelt oder nicht. Mit «First Published Date» hingegen kann eingesehen werden, wann die «News» publiziert wurde. Wir werden beide Felder verwenden müssen, um einen guten Workflow mit Flow erstellen zu können.
Jetzt wo die technischen Details geklärt sind, machen wir uns ans Eingemachte:
Um die Erstellung eines Flow so einfach wie möglich zu machen, gehen wir auf die SharePoint-Site, auf «Site Contents» und anschliessend auf «Site Pages». Von dort aus kann dann ein Flow erstellt werden:
Im rechts erschienenen Fenster wählen wir den Flow «Post a message to Teams for a selected item». Nun gelangen wir zur Flow-Bearbeitungsseite:
Mit einem Klick auf «Edit» in der ersten Aktion erhalten wir die ID der «Liste». Diese werden wir benötigen, um auf die entsprechende Ressource zugreifen zu können. Dementsprechend kopieren wir uns diese weg. Weil diese Vorlage nicht ganz dem entspricht, was wir erreichen möchten, schliessen wir diesen Flow wieder und erstellen einen neuen mit dem Knopf «Create from blank»:
Hier wählen wir den Trigger «SharePoint: When an item is created» und werden auf die Flow-Erstellungsseite weitergeleitet:
Im Feld «Site Address» wählen wir im Dropdown-Menü die entsprechende Site aus und fügen den «List Name» von vorhin ein (mit dem «Umweg» über ein Template spart man sich das Heraussuchen der ID 😉 ). Der Flow wird also ausgelöst, wenn ein neues Element auf unserer SharePoint-Site erstellt wird.
Damit unser Flow nicht bei jedem beliebigen Element ausgeführt wird, muss dieser unterscheiden können, ob es sich bei der erstellten Site um eine News Site handelt oder nicht. Dazu erstellen wir eine «Condition»:
Diese überprüft, ob der Wert im Feld «Promoted State» (ein Float) ein Wert grösser als 0 steht. Wenn ja, dann handelt es sich um einen News-Beitrag. Wenn nicht, dann um eine «normale» Page.
Hinweis: Ich habe es mit einer Condition versucht, die überprüft ob das Feld Promoted State leer ist oder nicht. Das hat aber nicht geklappt, weil der Datentyp nicht kompatibel ist. Auch das Umwandeln in einen String klappt nicht, weswegen ich bei der oben beschriebenen Lösung verblieben bin.
Innerhalb des «If no»-Bedingung muss nichts stehen, weil bei der Erstellung einer normalen Page in unserem Fall nichts unternommen werden soll.
In der «If yes»-Bedingung hingegen geht es mit einer «Do until»-Schleife weiter:
Kleiner Exkurs: eine «Do until»-Schleife führt die innerhalb der Schleife angegebenen Aktionen solange aus, bis eine bestimmte Bedingung erfüllt wurde oder die Schleife eine bestimmte Anzahl male durchgeführt wurde.
Bevor es technisch weitergeht, eine kurze Erklärung, wieso diese Schleife überhaupt notwendig ist: Der Trigger «When an item is created» wird ausgeführt, sobald SharePoint das Objekt erstellt hat. Flow wartet somit nicht bis der News-Beitrag «publiziert» wurde oder überhaupt eine Überschrift hat. Dies ist natürlich problematisch, weil bei der Erstellung einer News doch einige Zeit vergehen kann. Aus diesem Grund muss überprüft werden, ob die News überhaupt publiziert wurde, bevor die Nachricht an das Team gesendet wird.
Bevor wir nun aber mit der Erstellung der Bedingung beginnen, erstellen wir die Aktionen, welche während der Schleife ausgeführt werden sollen. Wir machen dabei folgendes:
Mit SharePoint Get item lesen wir das von SharePoint erstellte Objekt erneut ein. Dies müssen wir deshalb tun, damit Flow die Änderungen des Felds «FirstPublishedDate» überhaupt mitbekommt. Mit Delay hingegen definieren wir eine einfache Wartezeit, bevor die Bedingung der Schleife erneut überprüft wird.
Bei der Aktion «Get item» definieren wir auch wieder die Site und die Liste (wie beim Trigger) und geben zusätzlich die ID mit, welche vom Trigger durchgegeben wird:
Die Delay-Funktion ist selbsterklärend:
Um die Anzahl von Versuchen zu definieren, welche die Schleife durchführen wird, müssen wie den Inhalt der Felder unter «Change limits» anpassen:
In diesem Fall wird die Überprüfung 60-mal durchgeführt, bevor die Schleife verlassen wird.
Nun zu der Bedingung: Power Automate bietet einige Funktionen, die (noch) nicht über das GUI verwendet werden können. Die Funktion «empty» ist eine solche. Mit dieser kann überprüft werden, ob ein Feld leer ist oder nicht. Somit müssen wir in den «Advanced mode» wechseln und das Feld wie folgt ausfüllen:
Wichtig ist hierbei, dass das Feld «FirstPublishedDate» von der Aktion «Get_item» und nicht von der ersten Aktion «When an item is created» verwendet wird! Bei der Erstellung des Objekts hat unser News-Beitrag noch kein «FirstPublishedDate», weil dieser noch nicht publiziert wurde. Sobald sich das ändert und die Aktion «Get item» ausgeführt wird, wird die Bedingung oben erfüllt.
Die «Do until»-Schleife überprüft in unserem Fall für 60 x 5 Minuten, ob die News publiziert wurde. Wenn diese Zeit verstreicht, ohne dass die News publiziert wurde, dann bleibt das Feld «FirstPublishedDate» leer und wir können mit einer weiteren Condition entscheiden, was mit der Site passiert.
Nun da wir die «Do until»-Schleife fertig haben, können wir mit einer weiteren Condition (diese muss zwingend ausserhalb der «Do until»-Schleife sein!) fortfahren:
Auch hier wechseln wir wieder in den «advanced mode» um die «empty»-Funktion verwenden zu können. Wir überprüfen somit, ob das Feld «First Published Date» leer ist. Wenn ja, dann möchten wir den unveröffentlichten News-Beitrag löschen (fünf Stunden sollten genügen, um einen News-Beitrag fertigzustellen ;-)). Wenn nein, dann soll das Team informiert werden.
In der «If yes»-Bedingung erstellen wir die Löschen-Aktion. Die Felder können wir mit denselben Eingaben wie weiter oben ausfüllen:
Die letzte Aktion bestehe darin, nach Erstellung und Publizierung der Site eine Nachricht an das Team in Microsoft Teams zu senden. Dazu erstellen wir eine «Teams Post message» Aktion in der «If no»-Bedingung. Im Dropdown-Menü können wir das Team und den Kanal auswählen. Im Feld «Message» können wir nun die Felder angeben, welche wir möchten. In unserem Fall wird der Titel der News und ein Link zur zugehörigen SharePoint-Page gepostet:
Das wars, der Flow ist soweit fertig erstellt und kann nun mit dem Knopf «Create flow» oben rechts erstellt werden.
Bevor wir allen von unserem tollen Flow berichten, müssen wir das Ganze noch testen. Dazu gehen wir wie folgt vor:
Die Hilferessourcen von Microsoft sind, wenn überhaupt, nur sehr spärlich vorhanden, was bedeutet, dass viele Dinge durch ausprobieren herausgefunden werden müssen. Bedingungen stellen erfahrungsgemäss die grösste Fehlerquelle dar, weswegen es sich anbietet, diese gründlich zu testen. In diesem Fall habe ich nach jeder Bedingung eine angepasste Nachricht in Microsoft Teams posten lassen. Wenn also die Nachricht «Die Seite wurde nicht veröffentlicht» gepostet wird obwohl die Veröffentlichung bereits stattgefunden hat, dann weiss ich, dass ich die Bedingung nochmals überprüfen muss.
Danke fürs Lesen/Teilen/Kommentieren! 🙂
Abonniere unseren Blog und verpasse keinen Beitrag mehr. Wir spammen Dich nicht zu, sondern informieren Dich nur über neue Beiträge.
Easy Directory 2.0 - entdecke die neuen Funktionen & Verbesserungen Wir freuen uns, dir die neueste Version von Easy Directory präsentieren zu dürfen! Diese ...
Übersicht des Microsoft Teams Update Nov24 Geschätze Kundschaft Sie telefonieren mit uns über Microsoft Teams ins öffentliche Netz, wofür wir uns herzlich bedanken. Aus ...
Teams Telefonie mit eSIM auf deinem Handy, ohne Teamsapp! Du kennst die Situation: Du hast eine Festnetznummer in Microsoft Teams im Büro. Unterwegs musst ...
Printix ist neu Tungsten Printix Cloud Wir freuen uns, Ihnen mitteilen zu können, dass Printix nun Tungsten Printix Cloud heisst. Der Name wurde geändert, ...
Buche einen Microsoft Teams Meeting Termin bei Christoph Schoch. Nach der Buchung erhälst du eine Termineinladung. Dort findest du einen Link für das Teams Meeting. Natürlich kannst du uns auch gerne eine E-Mail schreiben oder uns direkt anrufen.
Wenn du Fragen hast, nutze dazu unser Helpcenter und/oder eröffne eine Ticket für dein Anliegen.