Base64 Encoding in PowerFx ohne Flow – verständlich erklärt
Wenn du JSON in PowerFx korrekt übermitteln willst – etwa für HTTP POST Requests mit HttpRequestV2 – kommst du früher oder später an einen Punkt, an dem du Base64 Encoding brauchst. Warum? Weil PowerFx Records kein echtes JSON erzeugen, sondern etwas Eigenes, das viele APIs nicht verstehen. Und wenn du versuchst, das direkt zu senden, bekommst du den klassischen Fehler: Empty Payload.
Ein Blogbeitrag von mofumofu_power liefert dafür eine geniale Lösung – komplett ohne Flow und rein mit PowerFx-Bordmitteln. Ich erkläre dir Schritt für Schritt, was dahintersteckt, warum es funktioniert – und wie du dir den ganzen Kram mit einer Komponente die du weiter unten downloaden kannst, sparst.
Die Grundlage: ASCII und Binärdaten
PowerFx hat keine native Unterstützung für Base64 oder echte JSON-Kodierung. Aber es hat zwei wichtige Funktionen: Char() und Sequence().
AddColumns(Sequence(256, 1), "char", Char(Value))
Damit kannst du später Textzeichen in Dezimalwerte umwandeln – der erste Schritt in Richtung Base64.
Von Text zu Base64 – der manuelle Weg
Die Idee hinter dem Blogpost ist clever: Du wandelst Text → ASCII → Binär → Base64 – komplett in PowerFx. Dabei wird jedes Zeichen in 8-Bit-Binärwerte zerlegt und anschließend in 6-Bit-Blöcke für Base64 umgerechnet.
Das Encoding passiert durch eine handgebaute Lookup-Tabelle, in der jedem Base64-Zeichen (A-Z, a-z, 0-9, +, /) sein Binärwert zugewiesen ist. Kombiniert mit einem Padding-Mechanismus, der das Ganze auf 6er-Blöcke auffüllt, funktioniert das sauber.
// Ergebnis: "Happy Holidays" → "SGFwcHkgSG9saWRheXM="
Und zurück: Decode Base64 zu Text
Die Umkehrung geht genauso: Base64-Zeichen → Binär → 8-Bit → ASCII → Klartext. Auch das läuft komplett mit Lookup, Sequenzen und Umrechnung per Power(). Das Schöne: Du brauchst keine externen Konnektoren oder Workarounds.
Warum sich eine Komponente lohnt
Die Logik hinter dem Encoding lässt sich vollständig in PowerFx umsetzen – das ist stark. Gleichzeitig bietet es sich an, diese wiederverwendbare Funktion in einer Component Library zu kapseln. So kannst du sie einfach in beliebigen Apps einbinden, zentral pflegen und bei Bedarf erweitern – ganz ohne Copy-Paste oder zusätzliche Anpassungen. Deshalb hab ich mir eine Component Library gebaut, die genau diese Logik kapselt. Zwei Funktionen – EncodeBase64(text) und DecodeBase64(b64) – und du musst dich nie wieder mit Concat(), Mod(), Char() oder Binärrechnerei rumschlagen.
Set(varBody, cmpBase64.encodeBase64("{""name"":""Projekt"",""folder"":{}}"));
Vorteile der Komponente
- Kein Copy-Paste-Code mehr
- Fehler durch falsche Padding-Logik ausgeschlossen
- Leicht wartbar und in jeder App wiederverwendbar
- Ideal für JSON POSTs mit
HttpRequestV2
Ich habe die Component Library in eine Solution gepackt und zum Download bereitgestellt. Du kannst sie direkt importieren und sofort verwenden – ideal, wenn du ähnliche Anforderungen in mehreren Apps oder Umgebungen hast.
Fazit
Base64 Encoding in PowerFx ist machbar – und notwendig, wenn du mit APIs arbeitest. Der Blog von mofumofu_power zeigt, wie’s geht, vielen Dank für die großartige technische Grundlage. Aber für den Alltag brauchst du was Stabiles und Wiederverwendbares. Mit einer eigenen Komponente sparst du dir Ärger, Fehler und Zeit – und hast endlich Ruhe beim Senden von JSON in PowerFx.