Snippet-Parameter (@param snippet)
Mit dem Parametertyp snippet öffnet der Parameter-Dialog einen Snippet-Picker: eine durchsuchbare Auswahl bestehender Snippets mit Vorschaubild. Das Script bekommt eine Referenz auf das gewählte Snippet und kann es einfügen — typischer Einsatz: ein bestehendes Kundenlogo per Name suchen und ein vorhandenes Shape damit ersetzen.
Bild-Snippets als Bausteine
Am nützlichsten ist @param snippet mit Fragment- oder Picture-Snippets (fertige Objekte wie Logos, Icons, Signaturen). Mit subtype= lässt sich der Picker darauf einschränken.
Syntax
// @param snippet <name> "<Label>" [subtype="Fragment|Picture|Code"] [category="…"] [tooltip="…"]
- subtype — schränkt die Auswahl auf einen Snippet-Typ ein (
Fragment,PictureoderCode). Leer = alle. - category — schränkt auf eine Kategorie ein (z. B.
category="Logos"). Leer = alle. - default — optional die
Ideines Snippets, das beim Öffnen vorausgewählt ist. - Im Script liefert
Params.GetSnippet("<name>")eineSnippetRefmit den EigenschaftenId,Name,TechnicalName,SnippetType,PreviewPath— odernull, wenn nichts gewählt wurde.
Snippet einfügen
ppptools.InsertSnippet(ref) fügt das gewählte Fragment/Picture-Snippet auf der aktuellen Folie ein und gibt das eingefügte Shape (bei mehreren Objekten die Gruppe) zurück:
// @param snippet Logo "Kundenlogo" subtype="Fragment" category="Logos" tooltip="Logo aus der Bibliothek wählen"
// @button Einfügen
var logo = Params.GetSnippet("Logo");
if (logo != null)
{
var shp = ppptools.InsertSnippet(logo);
ppptools.CenterOnSlide(shp);
}
Bestehendes Shape ersetzen (Logo tauschen)
Der Kern-Use-Case: ein selektiertes Shape (z. B. das alte Logo) durch das gewählte Snippet ersetzen. ppptools.ReplaceShape(target, ref, scale, keepName) platziert das neue Objekt am Zentrum des Originals, skaliert es und löscht das Original.
// @param snippet Logo "Neues Logo" subtype="Fragment" category="Logos"
// @param enum Scale "Skalieren nach" options="Breite|Höhe|Einpassen|Strecken|Original" default="Breite"
// @param bool Keep "Namen beibehalten" default="true"
// @button Ersetzen
var logo = Params.GetSnippet("Logo");
var target = ppptools.GetSelected(); // das zu ersetzende Shape
if (logo != null && target != null)
ppptools.ReplaceShape(target, logo,
scale: Params.GetString("Scale"),
keepName: Params.GetBool("Keep"));
Skalier-Optionen:
| Wert | Wirkung |
|---|---|
| Breite | Ersatz auf die Breite des Originals, Seitenverhältnis erhalten |
| Höhe | Ersatz auf die Höhe des Originals, Seitenverhältnis erhalten |
| Einpassen | in die Box des Originals einpassen (grösstmöglich, Ratio erhalten) |
| Strecken | exakt auf Breite und Höhe des Originals (Ratio wird verzerrt) |
| Original | Grösse des Snippets unverändert lassen |
Bei Namen beibehalten übernimmt das neue Objekt den Namen des Originals — praktisch, wenn das Logo einen technischen Namen wie Kundenlogo trägt und später erneut per Name gefunden/ersetzt werden soll.
Alle gleichnamigen ersetzen
Um jedes Vorkommen über alle Folien zu tauschen, per ppptools.GetSlide(i) / ppptools.GetAllShapes(slide) iterieren und jedes Shape mit passendem Name an ReplaceShape übergeben. Ein vollständiges, lauffähiges Snippet dazu: Beispiel: Snippet per Namen ersetzen.