Existen dos formas diferentes de obtener y cambiar el tamaño y la posición de un elemento de página:
- Usar sus funciones de método get y set para el tamaño y la posición
- Manipular su transformación afín con las funciones
getTransform()ysetTransform()mientras se conserva el tamaño inherente
Cómo leer las propiedades de los elementos de página

Como se muestra en la figura, el tamaño y la posición se miden con respecto al cuadro delimitador de un elemento de página renderizado cuando no tiene rotación:
- Left y Top: se miden desde la esquina superior izquierda de la página hasta la
esquina superior izquierda del cuadro delimitador sin rotar. Usa
getLeft()ygetTop()para leer los valores. - Width y Height: son el ancho y la altura del cuadro delimitador sin rotar.
Usa
getWidth()ygetHeight()para leer los valores. - Rotación: es la rotación en el sentido de las manecillas del reloj con respecto a la línea vertical alrededor de
l centro del cuadro delimitador. Usa
getRotation()para leer el valor.
Todas las longitudes se miden en puntos (pt). La rotación se mide en grados (°).
Cómo establecer las propiedades de los elementos de página
Establece el tamaño y la posición de un elemento de página cuando lo creas con un método de inserción, como insertShape(). Para una forma existente, puedes establecer el tamaño, la posición y la rotación. También puedes establecer el ajuste de escala de un elemento para cambiar su tamaño o reflejarlo a lo largo de uno de sus bordes.
En la creación
Proporciona información de posición y tamaño cuando crees un elemento de página.
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.');
La secuencia de comandos anterior crea una forma en la primera diapositiva de la presentación activa con la posición y el tamaño especificados, y lee la información de posición y tamaño de la forma. El registro esperado es el siguiente:
Left: 100pt; Top: 200pt; Width: 300pt; Height: 60pt; Rotation: 0 degrees.
Tamaño, posición y rotación
Actualiza el tamaño y la posición de un elemento de página después de la creación:
- Usa
setLeft()ysetTop()para establecer la posición de la esquina superior izquierda del cuadro delimitador sin rotar. - Usa
setWidth()ysetHeight()para establecer el ancho y la altura renderizados del cuadro delimitador. - Usa
setRotation()para establecer la rotación en el sentido de las manecillas del reloj del cuadro delimitador alrededor de su centro.
La siguiente secuencia de comandos crea una forma en la primera diapositiva de la presentación activa, usa métodos set para actualizar su posición, tamaño y rotación, y lee la información de posición y tamaño de la 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.');
El registro esperado es el siguiente:
Left: 100pt; Top: 200pt; Width: 50pt; Height: 60pt; Rotation: 90°.
Los métodos set de tamaño, posición y rotación se pueden usar en cualquier orden o combinación. Si reemplazas la tercera línea de la secuencia de comandos anterior por la siguiente, se produce el mismo resultado:
shape.setWidth(55);
shape.setRotation(90).setHeight(60).setLeft(100);
shape.setWidth(50).setTop(200);
Cómo ajustar la escala de un elemento de página
En lugar de usar setWidth() y setHeight() para establecer el tamaño de la forma en un valor absoluto, se pueden usar scaleWidth() y scaleHeight() para estirar o comprimir un elemento de página con un factor de escala relativo.
shape.scaleHeight(0.5).scaleWidth(2);
En la siguiente figura, se muestra cómo funciona el código anterior en una forma cuadrada rotada 45°. Ten en cuenta que la esquina superior izquierda del cuadro delimitador se fija durante el escalamiento.

Cómo reflejar un elemento de página
El argumento en scaleWidth() y scaleHeight() puede ser negativo para que se pueda usar para voltear un elemento de página de forma horizontal o vertical.
// 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);
En la siguiente figura, se muestra cómo funciona el código anterior en una forma rotada 45°. Ten en cuenta que el elemento de página se voltea a lo largo de uno de los bordes de su cuadro delimitador, pero no de su centro.

Rotación de líneas
Al igual que otros elementos de página, la rotación de una línea no es el ángulo vertical de la línea, sino la rotación de su cuadro delimitador. Cuando creas una línea con puntos de inicio y finalización especificados, su rotación siempre es de 0°. Si arrastras los puntos finales de la línea en la IU de Diapositivas, se cambia su ángulo vertical, así como el tamaño y la posición de su cuadro delimitador, pero no se cambia su rotación. Si usas setRotation(), se rota el cuadro delimitador de la línea, lo que cambia de manera efectiva su ángulo vertical. Por lo tanto, dos líneas pueden tener el mismo ángulo vertical visual, pero diferentes cuadros delimitadores y, por lo tanto, diferentes valores de tamaño, posición y rotación.
Limitaciones
Algunos métodos de tamaño y posición no son compatibles con algunos tipos de elementos de página. En la siguiente tabla, se resumen los métodos que no son compatibles con ciertos tipos de elementos de página.
| Métodos | Forma | Video | Tabla |
|---|---|---|---|
| getHeight(), getWidth() | ✔ | ✔ | NO (muestra un valor nulo) |
| setHeight(), setWidth() | ✔ | ✔ | NO |
| setRotation() | ✔ | NO | NO |
| scaleHeight(), scaleWidth() | ✔ | ✔ | NO |
Todos los métodos de tamaño y posicionamiento pueden arrojar resultados inesperados si el elemento de página tiene un corte. Todas las limitaciones están sujetas a cambios. Consulta la referencia para obtener información actualizada.
Usa transformaciones afines
Para un control avanzado, el tamaño y la posición de un elemento de página también se pueden calcular y ajustar a través de su tamaño inherente (nativo) y su transformación afín.
Google Apps Script proporciona una interfaz similar a la API de Google Slides para usar transformaciones afines.
- Para leer propiedades, puedes usar una transformación afín, que describe cómo se ajusta la escala, se rota, se corta y se posiciona un elemento. Para obtener información sobre cómo usar
la transformación de un elemento y su tamaño inherente (nativo) para calcular su
tamaño visual en una diapositiva, consulta
Transformaciones. En Apps Script, usa lo siguiente:
getInherentWidth()ygetInherentHeight()para el tamaño inherente (nativo) de los elementos de páginagetTransform()para la transformación afín de los elementos de página
- Para cambiar las propiedades, puedes usar transformaciones afines para realizar ajustes de escala, rotación, reflexión y mucho más. Para obtener información sobre cómo cambiar el tamaño y la posición de los elementos de página
con transformaciones afines, consulta
Tamaño y posición.
En Apps Script, usa lo siguiente:
setTransform()para establecer la transformación afín de los elementos de página (similar al modo ABSOLUTE)preconcatenateTransform()para concatenar previamente una transformación afín a la transformación actual de los elementos de página (similar al modo RELATIVE)
La siguiente secuencia de comandos crea una forma, establece su transformación, lee su tamaño inherente y lee su transformación afín.
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.');
El resultado del registro esperado es el siguiente:
Inherent width: 236.2pt; Inherent height: 236.2pt.
La forma resultante tiene la siguiente transformación, tamaño renderizado y posición:
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°.