Rozmiar i pozycję elementu strony możesz uzyskać i zmienić na 2 sposoby:
- za pomocą funkcji pobierających i ustawiających rozmiar i pozycję.
- manipulować jego przekształceniem afinicznym za pomocą funkcji
getTransform()isetTransform(), zachowując jego rozmiar;
Odczytywanie właściwości elementów strony

Jak pokazano na rysunku, rozmiar i pozycja są mierzone względem ramki ograniczającej renderowanego elementu strony, gdy nie jest on obrócony:
- Lewy i Górny: mierzone od lewego górnego rogu strony do lewego górnego rogu nieobróconej ramki ograniczającej. Użyj
getLeft()igetTop(), aby odczytać wartości. - Szerokość i wysokość: szerokość i wysokość nieobróconej ramki ograniczającej.
Aby odczytać wartości, użyj
getWidth()igetHeight(). - Obrót: obrót w kierunku zgodnym z ruchem wskazówek zegara względem linii pionowej wokół środka ramki ograniczającej. Użyj
getRotation(), aby odczytać wartość.
Wszystkie długości są mierzone w punktach (pt). Obrót jest mierzony w stopniach (°).
Ustawianie właściwości elementu strony
Określ rozmiar i położenie elementu strony podczas jego tworzenia za pomocą metody wstawiania, np. insertShape(). W przypadku istniejącego kształtu możesz ustawić rozmiar, pozycję i obrót. Możesz też ustawić skalowanie elementu, aby zmienić jego rozmiar lub odbić go wzdłuż jednej z krawędzi.
W momencie utworzenia
Podaj informacje o położeniu i rozmiarze podczas tworzenia elementu strony.
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.');
Powyższy skrypt tworzy kształt na pierwszym slajdzie aktywnej prezentacji o określonym położeniu i rozmiarze oraz odczytuje informacje o położeniu i rozmiarze kształtu. Oczekiwany dziennik to:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
Rozmiar, położenie i obrót
Aktualizowanie rozmiaru i położenia elementu strony po jego utworzeniu:
- Użyj przycisków
setLeft()isetTop(), aby ustawić położenie lewego górnego rogu nieobróconej ramki ograniczającej. - Użyj znaków
setWidth()isetHeight(), aby ustawić renderowaną szerokość i wysokość ramki. - Użyj
setRotation(), aby ustawić obrót prostokąta ograniczającego wokół jego środka zgodnie z ruchem wskazówek zegara.
Ten skrypt tworzy kształt na pierwszym slajdzie aktywnej prezentacji, używa setterów do aktualizowania jego pozycji, rozmiaru i obrotu oraz odczytuje informacje o pozycji i rozmiarze kształtu.
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.');
Oczekiwany dziennik to:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
Ustawienia rozmiaru, pozycji i rotacji można stosować w dowolnej kolejności lub kombinacji. Zastąpienie trzeciego wiersza w poprzednim skrypcie tym skryptem da ten sam wynik:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
Skalowanie elementu strony
Zamiast używać setWidth() i setHeight() do ustawiania rozmiaru kształtu na wartość bezwzględną, można użyć scaleWidth() i scaleHeight(), aby rozciągnąć lub ścisnąć element strony za pomocą względnego współczynnika skalowania.
shape.scaleHeight(0.5).scaleWidth(2);
Na poniższym rysunku pokazano, jak powyższy kod działa w przypadku kwadratu obróconego o 45°. Pamiętaj, że podczas skalowania lewy górny róg ramki ograniczającej jest stały.

Odbijanie elementu strony
Argumenty w funkcjach scaleWidth() i scaleHeight() mogą być ujemne, dzięki czemu można ich używać do odwracania elementu strony w pionie lub w poziomie.
// 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);
Na poniższym rysunku pokazano, jak działa powyższy kod w przypadku kształtu obróconego o 45°. Pamiętaj, że element strony jest odwracany wzdłuż jednej z krawędzi jego ramki ograniczającej, a nie w jej środku.

Obrót linii
Podobnie jak w przypadku innych elementów strony, obrót linii nie jest kątem pionowym linii, ale obrotem jej ramki ograniczającej. Gdy tworzysz linię z określonymi punktami początkowym i końcowym, jej obrót wynosi zawsze 0°. Przeciąganie punktów końcowych linii w interfejsie Prezentacji zmienia jej kąt pionowy, a także rozmiar i położenie ramki ograniczającej, ale nie zmienia jej obrotu. Użycie klawisza setRotation() powoduje obrócenie ramki ograniczającej linii, co zmienia jej kąt pionowy. Dwa wiersze mogą więc mieć ten sam wizualny kąt pionowy, ale różne ramki ograniczające, a co za tym idzie, różne wartości rozmiaru, pozycji i rotacji.
Ograniczenia
Niektóre metody określania rozmiaru i położenia są niezgodne z niektórymi typami elementów strony. W tabeli poniżej znajdziesz podsumowanie metod, które nie są zgodne z niektórymi typami elementów strony.
| Metody | Kształt | Wideo | Tabela |
|---|---|---|---|
| getHeight(), getWidth() | ✔ | ✔ | NIE (zwraca wartość null) |
| setHeight(), setWidth() | ✔ | ✔ | NIE |
| setRotation() | ✔ | NIE | NIE |
| scaleHeight(), scaleWidth() | ✔ | ✔ | NIE |
Wszystkie metody określania rozmiaru i położenia mogą dawać nieoczekiwane wyniki, jeśli element strony jest poddany ścinaniu. Wszystkie ograniczenia mogą ulec zmianie. Aktualne informacje znajdziesz w dokumentacji.
Używanie przekształceń afinicznych
Aby uzyskać zaawansowaną kontrolę, rozmiar i pozycję elementu strony można też obliczać i dostosowywać za pomocą jego wbudowanego (natywnego) rozmiaru i transformacji afinicznej.
Google Apps Script udostępnia interfejs podobny do interfejsu Google Slides API do używania przekształceń afinicznych.
- Aby odczytać właściwości, możesz użyć transformacji afinicznej, która opisuje, jak element jest skalowany, obracany, ścinany i pozycjonowany. Aby dowiedzieć się, jak obliczyć wizualny rozmiar elementu na slajdzie na podstawie jego przekształcenia i rozmiaru wbudowanego (natywnego), przeczytaj artykuł Przekształcenia. W Apps Script użyj:
getInherentWidth()igetInherentHeight()dla wbudowanego (natywnego) rozmiaru elementów strony;getTransform()– przekształcenie afiniczne elementów strony.
- Aby zmienić właściwości, możesz użyć przekształceń afinicznych do skalowania, obracania, odbijania i innych czynności. Aby dowiedzieć się, jak określać rozmiar i pozycję elementów strony za pomocą przekształceń afinicznych, przeczytaj artykuł Określanie rozmiaru i położenia.
W Apps Script użyj:
setTransform()– aby ustawić transformację afiniczną elementów strony (podobnie jak w przypadku trybu ABSOLUTE);preconcatenateTransform(), aby wstępnie połączyć transformację afiniczną z bieżącą transformacją elementów strony (podobnie jak w przypadku trybu RELATIVE).
Poniższy skrypt tworzy kształt, ustawia jego przekształcenie, odczytuje jego rozmiar wewnętrzny i przekształcenie afiniczne.
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.');
Oczekiwane dane wyjściowe logu to:
Inherent width: 236.2pt; Inherent height: 236.2pt.
Powstały kształt ma następujące przekształcenie, rozmiar i pozycję:
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°.