Kategorien-Archiv Microsoft Flow

Flow/PowerAutomate: Prüfen, ob ein String leer ist

Klingt einfach, muss aber über eine Formel umgesetzt werden.

Power Automate: Dynamischer Empfänger beim Email-Versand per Outlook

Wenn man in Power Automate (ehemals Microsoft Flow) Emails mit SharePoint List Item Attachments verschicken möchte, verwendet man in der Regel den „Send an email“ Outlook Connector. Dieser bietet über ein kleines Icon die Möglichkeit, den „Attachment“-Bereich umzustellen, sodass man diese über ein vorher befülltes Array referenzieren kann.

Leider wird in der Standard-Ansicht der Aktion im „To“-Bereich keine Möglichkeit gegeben, dynamischen Inhalt einzusetzen, zum Beispiel die Email eines Personen-Felds aus der SharePoint-Liste.

In der Standard-Ansicht kann man keinen dynamischen Empfänger einfügen…

Dies geht jedoch, in dem man in den „Advanced“-Modus wechselt:

Dazu klickt man erst oben rechts in der Aktion auf die beiden Pfeile. Nun hat man schon mal die Möglichkeit, dynamischen Inhalt einzufügen. Möchte man alle verfügbaren Felder aus dem SharePoint List Item sehen, klickt man rechts auf das „See more“. Danach stehen einem alle Felder zur Verfügung.

Microsoft Flow: Email bei neuem oder geändertem SharePoint Item mit Attachments versenden

In SharePoint ist es sehr einfach, eine oder mehrere Dateien an einen Listeneintrag anzuhängen. Etwas komplizierter ist es, diese in Microsoft Flow bzw. Power Automate zu verarbeiten und zum Beispiel an eine Benachrichtigungs-Email für das neue oder geänderte List Item anzuhängen.

Um dies zu realisieren, müssen verschiedene Aktionen durchgeführt werden:

  • Holen der Attachments
  • Für jedes Attachment den eigentlichen Inhalten abfragen
  • Den Inhalt für jedes Attachment an eine Variable auf Basis eines Arrays anhängen
  • Die Email generieren und das Array anhängen
Ablauf des Flows zum Anhängen von Attachments an eine Email

1. Trigger: When an item is created or modified

Hier verbinden wir uns mit der SharePoint-Site und -Liste, für die wir den Flow aktivieren wollen:

2. Delay

Aus Erfahrung hat sich gezeigt, das gerade bei größeren und mehreren Attachments eine kurze Verzögerung von zum Beispiel einer Minute sinnvoll sein kann:

3. Get Attachments

Als nächstes müssen wir uns die Meta-Daten der Attachments für das zu verarbeitende List Item aus SharePoint heran holen:

Die ID ist dabei die des SharePoint List Items.

4. Initialize Variable

Nun müssen wir eine Variable vom Typ „Array“ initialisieren. Dieses Array wird dann für jedes Attachment einen Eintrag enthalten. Das Array kann dann in der Email ausgelesen bzw. verwendet werden:

5. Apply to each

Jetzt durchlaufen wir für jedes Attachment eine Schleife und holen uns die Details zu dem Attachment. Diese werden alle in der BODY-Variable aus der „Get Attachments“-Aktion geliefert:

In das Attribut „ContentBytes“ setzen wir die folgende Formel:

 body('Get_attachment_content').$content 

Der vollständige Code für diese Aktion sieht folgendermaßen an:

{    "inputs": {
        "name": "varAttachments",
        "value": {
            "Name": "@{items('Apply_to_each')?['DisplayName']}",
            "ContentBytes": "@{body('Get_attachment_content').$content}"              
        }
    }
}

6. Email versenden

Zum Schluß versenden wir die Email. Hier ist zum einen die richtige Aktion wichtig (V3 geht nicht), und das bei den Attachments rechts das kleine Icon geklickt wird, sodass die Attachments gruppiert werden. In das Textfeld schreiben wir dann den Namen unserer Array-Variable hinein:

Wenn wir nun an ein List Item aus der SharePoint-Liste Attachments anhängen, erhalten wir wie geplant eine Email mit den Attachments im Anhang:

Power Automate: SharePoint Felder „case-insensitiv“ prüfen

Möchte man in Power Automate (ehemals Microsoft Flow) bei SharePoint List Items prüfen, ob der Wert einer Spalte einen speziellen Text enthält, ist dies standardmäßig Case-sensitiv.

Um dies unabhängig von der Groß-/Kleinschreibung zu prüfen (case-insensitiv), kann man mit einer Expression in der Condition arbeiten.

Der Wert (links) entspricht dabei der Formel/Expression:

toLower(triggerBody()?['Title'])

wobei im hinteren Teil der Name der entsprechenden Spalte steht (in diesem Fall wird der Titel des List Items überprüft). Wichtig ist dann natürlich, den zu testenden String auch in Kleinschreibung zu formulieren.