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
actionParamsan den Flow zu übergeben – auch nicht über Token wie@{ID}. Der Zeilenkontext kommt ausschließlich über denFor 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.
