Entwicklung 29. September 2026 8 min Lesezeit

Content Snippets in Power Pages massenhaft pflegen: der Excel-Round-Trip

60 Content Snippets in zwei Sprachen, ohne 60-mal auf Neu zu klicken. Wie die Site-Component-Tabelle des Enhanced Data Model den Excel-Round-Trip möglich macht.

Sie haben eine Power-Pages-Site gebaut. Jetzt will das Marketing 30 neue Content Snippets, in zwei Sprachen. Sie öffnen die Verwaltung, klicken "Neu", füllen das Formular, speichern. Klicken "Neu". Füllen. Speichern. Nach dem zehnten wollen Sie den Laptop aus dem Fenster werfen.

Es geht besser. Das Enhanced Data Model legt Content Snippets in einer Dataverse-Tabelle ab, die sich per Excel exportieren und wieder importieren lässt. Sie bereiten 60 Snippets in einer Tabelle vor und laden sie in einem Rutsch. Kein verstecktes Feature, nur nicht am naheliegenden Ort: Die meisten lernen Power Pages über das Design Studio, wo es keine Massenoperationen gibt.

Eine Tabelle für (fast) alles: Site Component

Jahrelang lag die Power-Pages-Konfiguration in adx_*-präfixierten Tabellen (adx_contentsnippet, adx_webfile und so weiter). Das Enhanced Data Model (seit 2023/2024 für neue Sites) konsolidiert das in eine Dataverse-Tabelle: Anzeigename Site Component, logischer Name powerpagecomponent. Jede Zeile trägt einen Component Type, der sie unterscheidet.

Microsoft dokumentiert die Typen ausdrücklich, unter anderem: Content Snippet (Typ 7), Web Template (8), Site Setting (9), Web Page Access Control Rule (10), Web Page (2), Web File (3), Table Permission (18), Web Role (11) und rund zwei Dutzend weitere. Alles in einer Tabelle.

Die Site-Component-Tabelle in Power Apps: eine Tabelle, viele Komponententypen, die Content-Spalte als JSON, Import/Export in der Toolbar

Zwei Details, die man kennen sollte:

  • Über der physischen Tabelle powerpagecomponent liegen pro Typ virtuelle mspp_*-Tabellen (mspp_contentsnippet, mspp_webtemplate, mspp_sitesetting, ...). Über sie greifen Sie typisiert zu; die Site-Component-Tabelle ist die gemeinsame Basis. Genau deshalb sieht ein Snippet je nach Zugriffsweg unterschiedlich aus.
  • Die Site-Component-Tabelle wird in Power Apps als read only angezeigt ("this table represents a collection of objects in Dataverse"). Der Export/Import-Weg funktioniert trotzdem, er läuft über genau diese Tabelle.

Das Content-Feld: ein JSON-Umschlag

Für eine Content-Snippet-Zeile steckt der Inhalt im Feld Content als JSON:

{"value": "Gespeichert.", "type": 756150000}
Schlüssel Bedeutung
value Der eigentliche Text bzw. das HTML, das gerendert wird
type 756150000 = Text, 756150001 = HTML

Ehrlichkeitshinweis: Die Typ-Codes 756150000 (Text) und 756150001 (HTML) sind offiziell dokumentiert (als Optionsset mspp_type). Microsoft dokumentiert, dass das Enhanced Data Model die Eigenschaften jeder Content-Snippet-Zeile als JSON in die Content-Spalte der Site-Component-Tabelle verschiebt. Den genauen Umschlag von oben, mit den Schlüsseln value und type, beschreibt Microsoft dort nicht; dieser Teil ist meine im Demo-Portal live verifizierte Beobachtung. Über die typisierte mspp_contentsnippet-Sicht liegen Wert und Typ in getrennten Spalten (mspp_value, mspp_type); in der Site-Component-Tabelle sind sie im Content-JSON zusammengefasst.

Text-Snippets werden escaped ausgegeben (sicher per Default), HTML-Snippets as-is. HTML nur wählen, wenn Sie wirklich Markup brauchen, sonst handeln Sie sich ohne Not eine XSS-Fläche ein.

Der Round-Trip

1. Export als Vorlage

In make.powerapps.com die Umgebung wählen, unter Tabellen die Site Component öffnen, die Ansicht auf Ihre Snippets (und Ihre Site) filtern, dann Export to Excel / Edit in Excel. Sie erhalten eine .xlsx mit den passenden Zeilen und einer Dataverse-Verbindung.

2. In Excel bearbeiten

Bestehende Snippets: den Wert im Content-Feld ändern. Neue Snippets: Zeilen ergänzen mit Name (z. B. Common/Status/Saved), Component Type (Content Snippet), Power Pages Site id (der Site-Anzeigename), Content (das JSON oben) und Power Pages Site Language Id (Sprach-Anzeigename, z. B. English, German - Germany).

Wichtig: Die exportierte Datei enthält versteckte Pflicht-/Kontrollspalten, die Sie nicht anfassen dürfen (im File als (Do Not Modify) ... beschriftet: Row ID, Row Checksum, Modified On). Microsoft beschreibt sie in der Doku als "required hidden columns", der genaue Wortlaut der Beschriftung ist meine Beobachtung aus dem File. Für neue Zeilen bleiben diese Spalten leer, Dataverse vergibt beim Import die IDs.

3. Publish

Publish im Excel-Add-in lädt die Änderungen zurück. Neue Zeilen ohne Schlüssel werden eingefügt, bestehende aktualisiert. Zwei belegte Regeln: Zeilen werden nacheinander verarbeitet, ein Fehler in einer Zeile bricht die folgenden ab (vorherige bleiben gespeichert). Und: Wurde ein Datensatz zwischen Export und Import anderswo geändert, meldet der Import für diese Zeile einen Konflikt (Checksum/Modified-On-Staleness).

Stolpersteine

Falsches Dateiformat

Der Export bringt eine Excel-Datei mit Dataverse-Verbindung. Als CSV speichern oder in Numbers/LibreOffice öffnen kappt die Verbindung, Publish funktioniert nicht mehr. In echtem Excel bleiben (Desktop oder Web).

Kontrollspalten versehentlich füllen

Wer eine Zeile kopiert, um ein neues Snippet zu bauen, schleppt leicht GUID und Checksum mit. Dann versucht Dataverse ein UPDATE der Quellzeile statt eines INSERT, und Sie haben Ihr altes Snippet umbenannt. Bei neuen Zeilen die Kontrollspalten immer leeren.

Site-Anzeigename statt technischem Namen

Power Pages Site id will den Anzeigenamen. Bei mehreren ähnlich benannten Sites gibt es Mehrdeutigkeitsfehler beim Publish. Vorher die Export-Ansicht auf Ihre Site filtern, das pinnt die Spalte.

Sprach-Anzeigename

Power Pages Site Language Id will ebenfalls den Anzeigenamen (German - Germany, nicht German). Falsch geschrieben, entsteht ein verwaistes Snippet ohne Sprachbindung, ohne Fehlermeldung.

Programmatisch erzeugte Dateien

Bauen Sie das Excel per Skript (openpyxl o. ae.), fehlt die Dataverse-Verbindung. Dann entweder die generierten Zeilen in das echte Dataverse-Excel einfügen und publishen, oder gleich einen Power-Automate-Flow mit dem Dataverse-Connector nehmen.

Über Content Snippets hinaus

Derselbe Mechanismus gilt für alle Komponententypen in der Site-Component-Tabelle. Das Content-Format unterscheidet sich je Typ: Site Settings tragen einen einfachen Wert, Web Templates ihren HTML/Liquid-Quelltext. Wer je 50 Site Settings auf einmal ändern wollte, ohne gegen die Web API zu skripten: das ist die Antwort.

Für echtes CI/CD ist der Excel-Weg aber der falsche: dort gehören Solution-Deployment oder Power-Automate-Flows hin. Der Excel-Round-Trip ist für Menschen, für Bulk-Lokalisierung, initiales Setup und kleine Cross-Environment-Übernahmen.

Weiterführende Artikel

Quellen

Tino Rabe

Tino Rabe

Power Pages Spezialist · Former Microsoft MVP

Power Pages Spezialist, former Microsoft MVP. Ich unterstütze Unternehmen bei sicheren Kundenportalen: vom Architektur-Workshop über Coaching bis zum Security-Audit.

Ihr Team baut. Wer prüft das Fundament?

Wöchentliches Coaching: Ihre Entwickler bauen weiter, ich sichere Architektur, Berechtigungen und Reihenfolge im Wochentakt ab. Zum Coaching

Termin buchen