Zum Hauptinhalt springen

Mit Column Formatting lassen sich in SharePoint Listen und Bibliotheken Buttons direkt in Spalten einbetten, die einen Power Automate Flow auslösen. Dieser Artikel erklärt, wie das technisch funktioniert – und wie man Flows ansprechen kann, die nicht im Default Environment liegen.


Grundprinzip

SharePoint Column Formatting erlaubt es, beliebige Spalten mit JSON-basiertem Markup zu gestalten. Über die customRowAction-Property mit "action": "executeFlow" wird ein Button erzeugt, der beim Klick einen Flow auslöst und dabei den Kontext des jeweiligen Eintrags (Item ID, Listen-ID, Site-URL) automatisch mitliefert.

Der Nutzer muss keine Formulare ausfüllen – er klickt auf den Button, und SharePoint übergibt den Zeilenkontext direkt an den Flow.


Flow-Button in einer SharePoint List

Minimales Beispiel

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "button",
  "customRowAction": {
    "action": "executeFlow",
    "actionParams": "{\"id\": \"<FLOW-ID>\"}"
  },
  "style": {
    "background-color": "#6A11CB",
    "color": "white",
    "border": "none",
    "border-radius": "4px",
    "padding": "6px 14px",
    "cursor": "pointer"
  },
  "txtContent": "▶ Ausführen"
}

Erweitertes Beispiel mit Fluent UI Icon

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "children": [
    {
      "elmType": "button",
      "customRowAction": {
        "action": "executeFlow",
        "actionParams": "{\"id\": \"<FLOW-ID>\"}"
      },
      "style": {
        "background-color": "#6A11CB",
        "color": "#ffffff",
        "border": "none",
        "border-radius": "4px",
        "padding": "6px 14px",
        "cursor": "pointer",
        "display": "flex",
        "align-items": "center",
        "font-weight": "bold"
      },
      "children": [
        {
          "elmType": "span",
          "attributes": {
            "iconName": "Share",
            "class": "ms-fontSize-16"
          },
          "style": {
            "color": "#ffffff",
            "margin-right": "8px"
          }
        },
        {
          "elmType": "span",
          "style": { "font-size": "12px" },
          "txtContent": "▶ Verschieben"
        }
      ]
    }
  ]
}

Flow-Button in einer SharePoint Bibliothek (Document Library)

In Bibliotheken ist das Vorgehen identisch. Der einzige Unterschied: Man nutzt oft eine Bedingung, damit der Button nur bei tatsächlichen Dateien angezeigt wird (nicht bei Ordnern):

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "style": {
    "align-items": "center",
    "margin-top": "2px",
    "margin-bottom": "2px",
    "display": "=if([$File_x0020_Type] == '', 'none', 'flex')"
  },
  "children": [
    {
      "elmType": "button",
      "attributes": {
        "class": "approval-button",
        "title": "Datei verschieben"
      },
      "customRowAction": {
        "action": "executeFlow",
        "actionParams": "{\"id\": \"<FLOW-ID>\"}"
      },
      "style": {
        "height": "30px",
        "text-decoration": "none",
        "display": "flex",
        "align-items": "center",
        "text-align": "center",
        "justify-content": "center",
        "margin": "5px",
        "color": "#ffffff",
        "font-weight": "bold",
        "background-color": "#6A11CB",
        "border-radius": "3px",
        "border": "none",
        "cursor": "pointer"
      },
      "children": [
        {
          "elmType": "span",
          "attributes": {
            "iconName": "DocumentApproval",
            "class": "ms-fontSize-16 ms-fontWeight-regular"
          },
          "style": {
            "color": "#ffffff",
            "flex": "none",
            "margin-right": "8px",
            "margin-left": "5px"
          }
        },
        {
          "elmType": "span",
          "style": {
            "margin-right": "5px",
            "font-size": "12px"
          },
          "txtContent": "Datei verschieben"
        }
      ]
    }
  ]
}

Der Ausdruck "=if([$File_x0020_Type] == '', 'none', 'flex')" sorgt dafür, dass der Button bei Ordnern (kein Dateityp) ausgeblendet wird.


Flows außerhalb des Default Environments ansprechen

Das Problem

Standardmäßig akzeptiert SharePoint Column Formatting nur Flows aus dem Default Environment. Wer seine Flows in einer dedizierten Umgebung (z. B. Production) betreibt, bekommt beim Klick die Fehlermeldung:

Could not find flow '75f958ac-4540-483d-8317-437d21d9c147'.

Die Lösung: Erweitertes ID-Format

Microsoft unterstützt ein erweitertes Format für actionParams, das eine Umgebungs-ID voranstellt:

"id": "v1/{environmentId}/{flowId}"

Vollständiges Beispiel:

"actionParams": "{\"id\": \"v1/702eda1e-38a5-e381-8000-05b4944d8b59/75f958ac-4540-483d-8317-437d21d9c147\"}"

IDs ermitteln

Environment ID – aus der URL in Power Automate:

https://make.powerautomate.com/environments/702eda1e-38a5-e381-8000-05b4944d8b59/...

Flow ID – direkt im Flow über Export → Get flow identifier:

Power Automate liefert den fertigen v1/{environmentId}/{flowId}-Identifier, der direkt in actionParams eingesetzt wird:

"actionParams": "{\"id\": \"v1/702eda1e-38a5-e381-8000-05b4944d8b59/75f958ac-4540-483d-8317-437d21d9c147\"}"

Der Vorteil: Man muss v1, Environment-ID und Flow-ID nicht manuell aus der URL zusammenbauen – Power Automate liefert den kombinierten Wert direkt.


Der passende Flow-Trigger

Der Flow muss den Trigger „SharePoint – Für ein ausgewähltes Element (V2)" verwenden, konfiguriert auf exakt die Site-URL und den Listennamen, in dem der Button liegt.

Der Trigger liefert automatisch den vollständigen Zeilenkontext:

Wert Ausdruck
Item ID triggerBody()?['entity']?['ID']
Listen-ID triggerBody()?['entity']?['listId']
Site-URL triggerBody()?['entity']?['siteUrl']
Listenname triggerBody()?['entity']?['listName']
Auslösender User triggerBody()?['author']?['email']

Hinweis: Der Manual Trigger funktioniert mit diesem Button-Mechanismus nicht. Es gibt keine Möglichkeit, eigene Parameter (z. B. Item ID) über actionParams an den Flow zu übergeben – auch nicht über Token wie @{ID}. Der Zeilenkontext kommt ausschließlich über den For selected item-Trigger.


Häufige Fehlerquellen

Fehler Ursache
„Could not find flow" Flow im Non-Default Environment, falsches ID-Format
„Could not find flow" Trigger zeigt auf andere Site-URL oder Listenname
„Could not find flow" Flow ist ausgeschaltet
Button erscheint nicht Spalte nicht als „Benutzerdefinierte Spalte" angelegt
Button erscheint immer (auch bei Ordnern) $File_x0020_Type-Bedingung fehlt (nur Bibliotheken relevant)

Tipp: Flow Identifier direkt aus Power Automate kopieren

Den v1/...-Identifier muss man nicht manuell aus URL-Teilen zusammensetzen. Power Automate liefert ihn direkt:

Flow öffnen → Hauptmenü oben → Export → Get flow identifier

Das Ergebnis ist der fertige v1/{environmentId}/{flowId}-String, den man direkt als Wert in actionParams einsetzt. Kein Suchen in der Adressleiste, kein manuelles Kombinieren von v1 + Environment-ID + Flow-ID.


Fazit

Flow-Buttons in SharePoint Listen und Bibliotheken sind ein eleganter Weg, um Power Automate Flows kontextbezogen aus der Liste heraus zu starten – ohne Umweg über die Power Automate Oberfläche. Mit dem v1/{environmentId}/{flowId}-Format funktioniert das auch für Flows außerhalb des Default Environments. Der Schlüssel ist der korrekte Trigger-Typ: „Für ein ausgewähltes Element (V2)" – er sorgt dafür, dass Item ID, Listen- und Site-Kontext automatisch mitgeliefert werden.

Governance in Ihrer Umgebung analysieren?

Im kostenlosen Quick Check zeigen wir Ihnen in 30 Minuten Ihre größten Risiken.