Automatisierte Dokumentenerstellung mit Power Fx
In diesem Artikel lernst du, wie du CanvasApp PDF erstellen mit Word Online und Office 365 Groups kannst – mit einer Word-Vorlage gefüllt aus Power Apps-Daten, via Power Automate in PDF konvertiert und automatisch in eine gruppengefüllte SharePoint-Bibliothek abgelegt. Diese Methode ist ideal für standardisierte PDF-Ausgaben aus Canvas-Apps zusammen mit Office 365 Groups.
In modernen Power Platform-Anwendungen spielt die dynamische Generierung von Dokumenten eine immer größere Rolle – sei es für Angebote, Lieferscheine oder Berichte. Die manuelle Bearbeitung von Vorlagen gehört der Vergangenheit an. In diesem Beitrag zeige ich eine praktische Lösung, wie mithilfe von Power Fx, Microsoft Graph und Word Online automatisiert ein Word-Dokument auf Basis einer Vorlage erstellt, befüllt, gespeichert und direkt als PDF exportiert werden kann. Die vorgestellte Funktion generiert ein Lieferscheindokument auf Grundlage einer Word-Vorlage, füllt es mit aktuellen Bestelldaten und speichert es temporär in einem SharePoint-Verzeichnis innerhalb einer Microsoft 365-Gruppe. Anschließend wird das erstellte Word-Dokument als PDF konvertiert – alles vollautomatisiert im Hintergrund.
Diese Power Fx-Funktion erstellt dynamisch ein Word-Dokument auf Basis einer Vorlage, füllt es mit Daten und wandelt es anschließend in ein PDF um. Der Code generiert zunächst einen eindeutigen Dateinamen mit GUID und aktuellem Datum. Anschließend wird über die Microsoft Graph API und die Funktion Office365Groups.HttpRequestV2
das Word-Template (ShippingTemplateV1.docx
) an einen temporären Speicherort in SharePoint kopiert. Dabei ersetzt WordOnline(Business).CreateFileItem
Platzhalter im Dokument durch dynamisch generierte Inhalte aus einer Tabelle und Galerie – darunter z. B. Positionsdaten und Texte. Zuletzt wird das erzeugte Word-Dokument mit GetFilePDF
in ein PDF konvertiert und in der Variable varPDFFile
gespeichert – bereit zum Download oder weiteren Versand.
Power Apps |
With(
{
fileName: "temp_" & GUID() & Text(
Now(),
"yyyymmdd"
) & ".docx",
Location: $"groups/{nfOffice365Grp.grpInfo.id}",
DocLib: $"{Text(nfOffice365Grp.grpDrive.id)}",
templatePath: nfOffice365Grp.AppStoragePath & "/Templates/ShippingTemplateV1.docx",
SourcePath: $"{nfOffice365Grp.AppStoragePath}/temp",
voucherNumber: "L/" & Text(
Today(),
"yyyyMMdd"
)
},
Office365Groups.HttpRequestV2(
$"https://graph.microsoft.com/v1.0/{Location}/Drives/{DocLib}/root:/{SourcePath}/{fileName}:/content",
"PUT",
Substitute(
JSON(
'WordOnline(Business)'.CreateFileItem(
Location,
DocLib,
templatePath,
{
dynamicFileSchema: ParseJSON(
JSON(
With(
{
orderHeader: LookUp(
DeineTabelle,
Name = "Name"
)
},
{
'73020536': voucherNumber,
'1674997573': ForAll(
CustomGallerySample As _item,
{
lineItemPosition: Text(_item.SampleHeading),
lineItemDescription: Text(_item.SampleImage),
lineItemAmount: Text(_item.SampleText)
}
)
}
)
)
)
}
),
JSONFormat.IncludeBinaryData
),
"""",
""
)
);
Set(
varPDFFile,
'WordOnline(Business)'.GetFilePDF(
Location,
DocLib,
$"{SourcePath}/{fileName}"
)
)
)
zu den Parametern
Für den Location-Wert nutzt du den Entra ID Connector, um die Gruppe abzurufen. Damit bekommst du die Basisinformationen zur Gruppe, die du später brauchst, um zum richtigen Speicherort zu gelangen.
Sobald du die Gruppe hast, geht es weiter mit dem Abrufen des zugehörigen SharePoint-Laufwerks per Graph API. Darüber bekommst du den Wert für DocLib, also das tatsächliche Dokumentenverzeichnis in SharePoint, in dem die Dateien gespeichert werden sollen.
Je nachdem, ob du mit Gruppen, Benutzern oder Teams arbeitest, gibt es unterschiedliche Wege, wie du an diese Werte kommst. Ich zeige dir in dem Beitrag die gängigsten Varianten und wann welche Methode am sinnvollsten ist. So stellst du sicher, dass deine Datei immer am richtigen Ort gespeichert wird – ganz egal, wie komplex deine App aufgebaut ist.
Location | Get Group via Entra ID |
DocLib | Get drive via Graph API |
AppStoragePath | z.B.: „IrgendeinOrdner/temp/“ |
DynamicFileSchema befüllen
Die Eigenschaft dynamicFileSchema
wird in Power Fx verwendet, wenn du mit dem WordOnline(Business).CreateFileItem
-Connector ein Word-Dokument mit Inhalten aus Power Apps dynamisch befüllen willst. Sie erlaubt es dir, Platzhalter im Word-Template mit echten Daten zu ersetzen.
Was passiert im Hintergrund: In deinem Word-Template hast du Platzhalter mit sogenannten Word Content Controls hinterlegt – also z. B. Textfelder mit bestimmten Tags oder IDs. Über dynamicFileSchema
gibst du dann ein JSON-Objekt mit den Werten an, die diese Platzhalter füllen sollen.
Das Schema ist dabei zweistufig aufgebaut:
-
Key-Value-Paare: Die Keys sind die Content Control IDs oder Tags aus deinem Word-Dokument.
-
Werte: Diese können einfache Strings sein oder – bei Tabellen – Arrays von Objekten.
{
"73020536": "L/20250619",
"1674997573": [
{
"lineItemPosition": "1",
"lineItemDescription": "Produkt A",
"lineItemAmount": "10"
},
{
"lineItemPosition": "2",
"lineItemDescription": "Produkt B",
"lineItemAmount": "20"
}
]
}
Kurz gesagt: dynamicFileSchema
ist die Brücke zwischen deinen Power Apps-Daten und den Platzhaltern im Word-Dokument – flexibel, dynamisch und extrem nützlich für automatisierte Dokumentenerstellung.
Im Prinzip kenn ich bisher 2 Arten, die entsprechenden Werte in deiner .docx zu ermitteln um sie in deiner PowerFX zu verwenden. In dem folgenden Artikel habe ich dir die folgenden Möglichkeiten kurz erklärt.
- Umwandeln der .docx in ein zip file
- Ermittle die Werte einmalig mit Power Automate
Word-Dokument in PDF umwandeln
Du hast ein Word-Dokument in Power Apps generiert und willst es jetzt als PDF weiterverarbeiten oder zum Download anbieten? Kein Problem – mit dem WordOnline(Business)
-Connector erledigst du das in wenigen Zeilen Power Fx.
Der Schlüssel dazu ist die Funktion GetFilePDF
. Sie nimmt den Speicherort deiner Datei in SharePoint und gibt dir die PDF-Version direkt zurück. Die Anwendung ist denkbar einfach:
Power Apps |
Set(
varPDFFile,
'WordOnline(Business)'.GetFilePDF(
Location,
DocLib,
$"{SourcePath}/{fileName}"
)
)
Was passiert hier genau?
Location
ist der Pfad zur Gruppenbibliothek – typischerweise"groups/{deineGruppenId}"
.DocLib
ist die ID deiner SharePoint-Dokumentbibliothek.SourcePath
undfileName
definieren den vollständigen Pfad zur Word-Datei, die du vorher erzeugt hast.
Sobald die Funktion ausgeführt wird, bekommst du eine PDF-Datei im Format BinaryFile zurück. Diese kannst du z. B. in einer Power App anzeigen, in einen Flow weitergeben oder zum Herunterladen anbieten.
Ein typisches Szenario: Du generierst aus einer Vorlage ein Word-Dokument, befüllst es mit dynamischen Daten, konvertierst es in ein PDF und schickst es per E-Mail raus – komplett automatisiert.
Wichtig: Achte darauf, dass das Word-Dokument im SharePoint gespeichert und vollständig verarbeitet wurde, bevor du GetFilePDF
aufrufst. Sonst bekommst du unter Umständen eine leere Datei zurück.
Fazit
Mit der hier vorgestellten Lösung hebst du deine Power Apps auf ein neues Level: Die vollautomatische Erstellung und Umwandlung von Word-Dokumenten in PDF – alles direkt in der Canvas App – spart nicht nur Zeit, sondern minimiert auch Fehlerquellen. Durch die clevere Kombination aus Power Fx, Microsoft Graph API und dem WordOnline(Business)-Connector lässt sich ein professioneller Dokumentenworkflow realisieren, der ohne klassische Programmierung auskommt. Ob Angebote, Lieferscheine oder individuelle Berichte – du hast jetzt das Werkzeug, um dynamisch, schnell und strukturiert zu liefern. Ein Muss für jede moderne LowCode-Anwendung.