Seitenelemente in Größe und Position anpassen

Es gibt zwei Möglichkeiten, die Größe und Position eines Seitenelements abzurufen und zu ändern:

  1. Verwenden Sie die Getter- und Setter-Funktionen für Größe und Position.
  2. Bearbeiten Sie die affine Transformation mit den Funktionen getTransform() und setTransform(), wobei die ursprüngliche Größe beibehalten wird.

Eigenschaften von Seitenelementen lesen

Größe anpassen und drehen

Wie in der Abbildung gezeigt, werden Größe und Position in Bezug auf den Begrenzungsrahmen eines gerenderten Seitenelements gemessen, wenn es nicht gedreht ist:

  • Links und Oben: Gemessen von der oberen linken Ecke der Seite zur oberen linken Ecke des nicht gedrehten Begrenzungsrahmens. Verwenden Sie getLeft() und getTop(), um die Werte zu lesen.
  • Breite und Höhe: Die Breite und Höhe des nicht gedrehten Begrenzungsrahmens. Verwenden Sie getWidth() und getHeight(), um die Werte zu lesen.
  • Drehung: Die Drehung im Uhrzeigersinn in Bezug auf die vertikale Linie um den Mittelpunkt des Begrenzungsrahmens. Verwenden Sie getRotation(), um den Wert zu lesen.

Alle Längen werden in Punkten (pt) gemessen. Die Drehung wird in Grad (°) gemessen.

Eigenschaften von Seitenelementen festlegen

Legen Sie die Größe und Position eines Seitenelements fest, wenn Sie es mit einer Einfügemethode wie insertShape() erstellen. Für eine vorhandene Form können Sie Größe, Position und Drehung festlegen. Sie können auch die Skalierung eines Elements festlegen, um die Größe zu ändern oder es entlang einer seiner Kanten zu spiegeln.

Bei der Erstellung

Geben Sie beim Erstellen eines Seitenelements Informationen zu Position und Größe an.

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, 100, 200, 300, 60);
Logger.log('Left: ' + shape.getLeft() + 'pt; Top: '
                    + shape.getTop() + 'pt; Width: '
                    + shape.getWidth() + 'pt; Height: '
                    + shape.getHeight() + 'pt; Rotation: '
                    + shape.getRotation() + ' degrees.');

Das vorherige Skript erstellt eine Form auf der ersten Folie der aktiven Präsentation mit der angegebenen Position und Größe und liest die Informationen zu Position und Größe der Form. Das erwartete Log ist:

Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.

Größe, Position und Drehung

Aktualisieren Sie die Größe und Position eines Seitenelements nach der Erstellung:

  • Verwenden Sie setLeft() und setTop(), um die Position der oberen linken Ecke des nicht gedrehten Begrenzungsrahmens festzulegen.
  • Verwenden Sie setWidth() und setHeight(), um die gerenderte Breite und Höhe des Begrenzungsrahmens festzulegen.
  • Verwenden Sie setRotation(), um die Drehung des Begrenzungsrahmens im Uhrzeigersinn um seinen Mittelpunkt festzulegen.

Das folgende Skript erstellt eine Form auf der ersten Folie der aktiven Präsentation, aktualisiert mit Settern ihre Position, Größe und Drehung und liest die Informationen zu Position und Größe der Form.

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setLeft(100).setTop(200).setWidth(50).setHeight(60).setRotation(90);
Logger.log('Left: ' + shape.getLeft()
                    + 'pt; Top: ' + shape.getTop()
                    + 'pt; Width: ' + shape.getWidth()
                    + 'pt; Height: ' + shape.getHeight()
                    + 'pt; Rotation: ' + shape.getRotation() + '\u00B0.');

Das erwartete Log ist:

Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.

Die Setter für Größe, Position und Drehung können in beliebiger Reihenfolge oder Kombination verwendet werden. Wenn Sie die dritte Zeile im vorherigen Skript durch das folgende Skript ersetzen, erhalten Sie dasselbe Ergebnis:

shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);

Größe eines Seitenelements anpassen

Anstatt mit setWidth() und setHeight() die Größe der Form auf einen absoluten Wert festzulegen, können Sie mit scaleWidth() und scaleHeight() die Größe eines Seitenelements mit einem relativen Skalierungsfaktor anpassen.

shape.scaleHeight(0.5).scaleWidth(2);

Die folgende Abbildung zeigt, wie der vorherige Code auf eine um 45° gedrehte quadratische Form angewendet wird. Beachten Sie, dass die obere linke Ecke des Begrenzungsrahmens während der Skalierung fixiert ist.

Skalierung von Präsentationen

Seitenelement spiegeln

Das Argument in scaleWidth() und scaleHeight() kann negativ sein, sodass Sie damit ein Seitenelement horizontal oder vertikal spiegeln können.

// Flip horizontally along the left edge of the bounding box.
shape.scaleWidth(-1);
// Flip vertically along the top edge of the bounding box.
shape.scaleHeight(-1);

Die folgende Abbildung zeigt, wie der vorherige Code auf eine um 45° gedrehte Form angewendet wird. Beachten Sie, dass das Seitenelement entlang einer der Kanten des Begrenzungsrahmens, aber nicht entlang des Mittelpunkts gespiegelt wird.

Reflexion von Folien

Drehung von Linien

Wie bei anderen Seitenelementen ist die Drehung einer Linie nicht der vertikale Winkel der Linie, sondern die Drehung des Begrenzungsrahmens. Wenn Sie eine Linie mit angegebenen Start- und Endpunkten erstellen, beträgt die Drehung immer 0°. Wenn Sie die Endpunkte der Linie in der Slides-Benutzeroberfläche ziehen, ändert sich der vertikale Winkel sowie die Größe und Position des Begrenzungsrahmens, aber nicht die Drehung. Mit setRotation() wird der Begrenzungsrahmen der Linie gedreht, wodurch sich der vertikale Winkel ändert. Zwei Linien können also denselben vertikalen Winkel haben, aber unterschiedliche Begrenzungsrahmen und daher unterschiedliche Werte für Größe, Position und Drehung.

Beschränkungen

Einige Methoden zum Anpassen von Größe und Position sind mit bestimmten Arten von Seitenelementen nicht kompatibel. In der folgenden Tabelle sind die Methoden zusammengefasst, die mit bestimmten Arten von Seitenelementen nicht kompatibel sind.

Methoden Form Video Tabelle
getHeight(), getWidth() NEIN (gibt „null“ zurück)
setHeight(), setWidth() NEIN
setRotation() NEIN NEIN
scaleHeight(), scaleWidth() NEIN

Alle Methoden zum Anpassen von Größe und Position können unerwartete Ergebnisse liefern, wenn das Seitenelement eine Scherung aufweist. Alle Beschränkungen können sich ändern. Aktuelle Informationen finden Sie in der Referenz.

Affine Transformationen verwenden

Für eine erweiterte Steuerung können Größe und Position eines Seitenelements auch über die ursprüngliche (native) Größe und die affine Transformation berechnet und angepasst werden.

Google Apps Script bietet eine ähnliche Schnittstelle wie die Google Slides API für die Verwendung affiner Transformationen.

  • Zum Lesen von Eigenschaften können Sie eine affine Transformation verwenden, die beschreibt, wie ein Element skaliert, gedreht, geschert und positioniert wird. Informationen zum Berechnen der visuellen Größe eines Elements auf einer Folie mithilfe der Transformation und der ursprünglichen (nativen) Größe finden Sie unter Transformationen. Verwenden Sie in Apps Script:
    • getInherentWidth() und getInherentHeight() für die ursprüngliche (native) Größe von Seitenelementen.
    • getTransform() für die affine Transformation der Seitenelemente.
  • Zum Ändern von Eigenschaften können Sie affine Transformationen verwenden, um Skalierung, Drehung, Spiegelung und mehr durchzuführen. Informationen zum Anpassen von Größe und Position von Seitenelementen mithilfe affiner Transformationen finden Sie unter Größe und Position anpassen. Verwenden Sie in Apps Script:
    • setTransform() , um die affine Transformation von Seitenelementen festzulegen (ähnlich dem ABSOLUTE-Modus).
    • preconcatenateTransform() , um eine affine Transformation vor der aktuellen Transformation von Seitenelementen zu verketten (ähnlich dem RELATIVE-Modus).

Das folgende Skript erstellt eine Form, legt ihre Transformation fest, liest ihre ursprüngliche Größe und liest ihre affine Transformation.

var slide = SlidesApp.getActivePresentation().getSlides()[0];
var shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE);
shape.setTransform(SlidesApp.newAffineTransformBuilder()
                   .setScaleX(2)
                   .setScaleY(1)
                   .setTranslateX(100)
                   .setTranslateY(200)
                   .build());
Logger.log('Inherent width: ' + shape.getInherentWidth()
                              + 'pt; Inherent height: '
                              + shape.getInherentHeight() + 'pt.');

Die erwartete Logausgabe ist:

Inherent width: 236.2pt; Inherent height: 236.2pt.

Die resultierende Form hat die folgende Transformation, gerenderte Größe und Position:

AffineTransform{scaleX=2.0, scaleY=1.0, shearX=0.0, shearY=0.0, translateX=100.0, translateY=200.0}
Left: 100pt; Top: 200pt; Width: 472.4pt; Height: 236.2pt; Rotation: 0°.