Esistono due modi diversi per ottenere e modificare le dimensioni e la posizione di un elemento della pagina:
- Utilizzando le funzioni getter e setter per le dimensioni e la posizione.
- Manipolando la sua trasformazione affine, utilizzando le funzioni
getTransform()esetTransform()mantenendo le dimensioni intrinseche.
Leggere le proprietà degli elementi della pagina

Come mostrato in figura, le dimensioni e la posizione vengono misurate rispetto al riquadro di selezione di un elemento della pagina sottoposto a rendering quando non è ruotato:
- Sinistra e In alto: misurati dall'angolo in alto a sinistra della pagina all'angolo in alto a sinistra del riquadro di selezione non ruotato. Utilizza
getLeft()egetTop()per leggere i valori. - Larghezza e Altezza: la larghezza e l'altezza del riquadro di selezione non ruotato.
Utilizza
getWidth()egetHeight()per leggere i valori. - Rotazione: la rotazione in senso orario rispetto alla linea verticale attorno
al centro del riquadro di delimitazione. Utilizza
getRotation()per leggere il valore.
Tutte le lunghezze sono misurate in punti (pt). La rotazione viene misurata in gradi (°).
Impostare le proprietà degli elementi della pagina
Imposta le dimensioni e la posizione di un elemento della pagina quando lo crei utilizzando
un metodo di inserimento come insertShape(). Per una forma esistente, puoi impostare
le dimensioni, la posizione e la rotazione; puoi anche impostare la scalabilità di un elemento per
ridimensionarlo o rifletterlo lungo uno dei suoi bordi.
Al momento della creazione
Fornisci informazioni su posizione e dimensioni quando crei un elemento della pagina.
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.');
Lo script precedente crea una forma nella prima slide della presentazione attiva con la posizione e le dimensioni specificate e legge le informazioni su posizione e dimensioni della forma. Il log previsto è:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
Dimensioni, posizione e rotazione
Aggiorna le dimensioni e la posizione di un elemento della pagina dopo la creazione:
- Utilizza
setLeft()esetTop()per impostare la posizione dell'angolo in alto a sinistra del riquadro di selezione non ruotato. - Utilizza
setWidth()esetHeight()per impostare la larghezza e l'altezza di rendering del riquadro di selezione. - Utilizza
setRotation()per impostare la rotazione in senso orario del riquadro di selezione attorno al suo centro.
Il seguente script crea una forma nella prima slide della presentazione attiva, utilizza i setter per aggiornarne la posizione, le dimensioni e la rotazione e legge le informazioni su posizione e dimensioni della forma.
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.');
Il log previsto è:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
I selettori di dimensioni, posizione e rotazione possono essere utilizzati in qualsiasi ordine o combinazione. La sostituzione della terza riga nello script precedente con lo script seguente produce lo stesso risultato:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
Scalare un elemento della pagina
Anziché utilizzare setWidth() e setHeight() per impostare le dimensioni della forma su un valore assoluto, è possibile utilizzare scaleWidth() e scaleHeight() per allungare o comprimere un elemento della pagina con un fattore di ridimensionamento relativo.
shape.scaleHeight(0.5).scaleWidth(2);
La figura seguente mostra come funziona il codice precedente su una forma quadrata ruotata di 45°. Tieni presente che l'angolo in alto a sinistra del riquadro di selezione è fisso durante il ridimensionamento.

Riflettere un elemento della pagina
L'argomento in scaleWidth() e scaleHeight() può essere negativo, in modo che
possa essere utilizzato per capovolgere un elemento della pagina orizzontalmente o verticalmente.
// 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);
La figura seguente mostra come funziona il codice precedente su una forma ruotata di 45°. Tieni presente che l'elemento della pagina viene capovolto lungo uno dei bordi del suo riquadro di selezione, ma non il suo centro.

Rotazione linea
Come per gli altri elementi della pagina, la rotazione di una linea non è l'angolo verticale
della linea, ma la rotazione del suo riquadro di selezione. Quando crei una linea con
punti di inizio e di fine specificati, la sua rotazione è sempre di 0°. Trascinando
i punti finali della linea nell'interfaccia utente di Presentazioni, ne modifichi l'angolo
verticale, nonché le dimensioni e la posizione del relativo riquadro di selezione, ma non la rotazione. L'utilizzo di setRotation() ruota il riquadro di selezione della linea,
modificandone di fatto l'angolo verticale. Pertanto, due linee possono avere lo stesso
angolo verticale visivo, ma riquadri di selezione diversi e quindi valori diversi
per dimensioni, posizione e rotazione.
Limitazioni
Alcuni metodi di dimensionamento e posizionamento non sono compatibili con alcuni tipi di elementi della pagina. La tabella seguente riepiloga i metodi non compatibili con determinati tipi di elementi della pagina.
| Metodi | Forma | Video | Tabella |
|---|---|---|---|
| getHeight(), getWidth() | ✔ | ✔ | NO (restituisce null) |
| setHeight(), setWidth() | ✔ | ✔ | NO |
| setRotation() | ✔ | NO | NO |
| scaleHeight(), scaleWidth() | ✔ | ✔ | NO |
Tutti i metodi di dimensionamento e posizionamento possono dare risultati imprevisti se l'elemento della pagina è soggetto a taglio. Tutte le limitazioni sono soggette a modifica. Controlla il riferimento per informazioni aggiornate.
Utilizzare le trasformazioni affini
Per un controllo avanzato, le dimensioni e la posizione di un elemento della pagina possono anche essere calcolate e regolate tramite le dimensioni intrinseche (native) e la trasformazione affine.
Google Apps Script fornisce un'interfaccia simile all'API Google Slides per l'utilizzo di trasformazioni affini.
- Per leggere le proprietà, puoi utilizzare una trasformazione affine, che descrive come un
elemento viene scalato, ruotato, inclinato e posizionato. Per scoprire come utilizzare
la trasformazione e le dimensioni intrinseche (native) di un elemento per calcolarne
le dimensioni visive in una slide, consulta
Trasformazioni. In
Apps Script, utilizza:
getInherentWidth()egetInherentHeight()per le dimensioni intrinseche (native) degli elementi della pagina;getTransform()per la trasformazione affine degli elementi della pagina.
- Per modificare le proprietà, puoi utilizzare le trasformazioni affini per eseguire scalatura,
rotazione, riflessione e altro ancora. Per scoprire come dimensionare e posizionare gli elementi della pagina utilizzando le trasformazioni affini, consulta Dimensionamento e posizionamento.
In Apps Script, utilizza:
setTransform()per impostare la trasformazione affine degli elementi della pagina (simile alla modalità ASSOLUTA);preconcatenateTransform()per pre-concatenare una trasformazione affine alla trasformazione corrente degli elementi della pagina (simile alla modalità RELATIVE).
Lo script seguente crea una forma, ne imposta la trasformazione, ne legge le dimensioni intrinseche e ne legge la trasformazione affine.
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.');
L'output del log previsto è:
Inherent width: 236.2pt; Inherent height: 236.2pt.
La forma risultante ha le seguenti trasformazioni, dimensioni di rendering e posizione:
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°.