Una aplicación útil de la API de Google Slides es combinar información de una o más fuentes de datos en una presentación de diapositivas con plantilla.
En esta página, se describe cómo puedes tomar datos de una fuente externa para insertarlos en una presentación de plantilla existente. El concepto es similar al de una combinación de correo electrónico con un procesador de texto y una hoja de cálculo.
Existen varias razones por las que este enfoque resulta útil:
Los diseñadores pueden ajustar el diseño de una presentación fácilmente con el editor de Presentaciones de Google. Esto es mucho más fácil que ajustar los parámetros en tu app para configurar el diseño de las diapositivas renderizadas.
Separar el contenido de la presentación es un principio de diseño conocido que ofrece muchos beneficios.
Una receta básica
Este es un ejemplo de cómo puedes usar la API de Presentaciones para combinar datos en una presentación:
Crea tu presentación como quieras que aparezca usando contenido de marcador de posición para ayudarte con el diseño.
Para cada elemento de contenido que insertarás, reemplaza el contenido del marcador de posición con una etiqueta. Las etiquetas son cuadros de texto o formas con una cadena única. Asegúrate de utilizar cadenas que no aparezcan normalmente. Por ejemplo,
{{account-holder-name}}
podría ser una buena etiqueta.En tu código, usa la API de Google Drive para hacer una copia de la presentación.
En tu código, usa el método
batchUpdate
de la API de Presentaciones, con un conjunto de solicitudesreplaceAllText
, para realizar todas las sustituciones de texto en toda la presentación. Usa solicitudesreplaceAllShapesWithImage
para realizar sustituciones de imágenes en toda la presentación.
Una vez que hayas creado una presentación con etiquetas, asegúrate de crear una copia y de usar la API de Presentaciones para manipularla. No uses la API de Presentaciones para manipular la copia principal de tu "plantilla".
En las siguientes secciones, se incluyen fragmentos de código que ilustran parte de este proceso. También puedes ver el video anterior para ver un ejemplo completo (Python) que combina varios de los conceptos de las secciones siguientes.
Combinar texto
Puedes usar una solicitud replaceAllText
para reemplazar por texto nuevo todas las instancias de una cadena de texto determinada de una presentación. Para las combinaciones, esto es más simple que buscar y reemplazar cada instancia de texto de forma individual. Una de las razones por las que este es el enfoque más sofisticado es que los IDs de elementos de página son difíciles de predecir, en especial a medida que los colaboradores definen mejor y mantienen la presentación de plantillas.
Ejemplo
En este ejemplo, se usa la API de Drive para copiar una presentación de plantilla y crear una nueva instancia de la presentación. Luego usa la API de Hojas de cálculo de Google para leer los datos de una hoja de cálculo y, por último, usa la API de Presentaciones para actualizar la presentación nueva.
En el ejemplo, se toman datos de 3 celdas en una fila de un rango con nombre en la hoja de cálculo. Luego, sustituye esos datos en la presentación donde sea que aparezcan las cadenas {{customer-name}}
, {{case-description}}
o {{total-portfolio}}
.
Apps Script
Go
Java
JavaScript
Node.js
PHP
Python
Ruby
Combinar imágenes
También puedes combinar imágenes en tu presentación mediante una solicitud replaceAllShapesWithImage
. Con esta solicitud, se reemplazan todas las instancias de formas que contienen la string de texto proporcionada por la imagen proporcionada. Con esta solicitud, se posiciona y ajusta automáticamente la imagen para que se ajuste a los límites de la forma de la etiqueta y, al mismo tiempo, se conserve su relación de aspecto.
Ejemplo
En este ejemplo, se usa la API de Google Drive para copiar una presentación de plantilla y crear una nueva instancia de la presentación. Luego, usa la API de Presentaciones para buscar cualquier forma que tenga el texto {{company-logo}}
y reemplazarla por una imagen del logotipo de la empresa. La solicitud también reemplaza cualquier forma con el texto {{customer-graphic}}
por una imagen diferente.
Apps Script
Go
Java
JavaScript
Node.js
PHP
Python
Ruby
Reemplazar instancias específicas de imágenes o cuadros de texto
Las solicitudes replaceAllText
y replaceAllShapesWithImage
son útiles para reemplazar etiquetas durante una presentación, pero a veces solo necesitas reemplazar elementos de acuerdo con otros criterios, como estar ubicado en una diapositiva específica.
En estos casos, debes recuperar los ID de las formas de etiquetas que desees reemplazar. Para reemplazar el texto, borra el texto existente en esas formas y, luego, inserta el nuevo (consulta el ejemplo Cómo editar texto en una forma especificada).
El reemplazo de imágenes es más complejo. Para combinar los elementos en una imagen, debes hacer lo siguiente:
- Obtén el ID de la forma de etiqueta.
- Copia la información sobre el tamaño y la transformación de la etiqueta.
- Agrega tu imagen a la página con la información sobre tamaño y transformación.
- Borra la forma de etiqueta.
Para preservar la relación de aspecto de la imagen y ajustarla al tamaño deseado, es posible que se requiera cierta atención, como se describe en la siguiente sección. Consulta también este ejemplo: Cómo reemplazar una etiqueta de forma por una imagen.
Conservar la relación de aspecto
Cuando creas imágenes con la API de Presentaciones, la coincidencia de aspecto se basa solo en el tamaño de la imagen, no en el tamaño y los datos de transformación. Se considera que los datos de tamaño que proporcionas en la solicitud createImage
son el tamaño deseado de la imagen. La API ajusta la relación de aspecto de la imagen a este tamaño deseado y, luego, aplica la transformación proporcionada.
Cuando reemplazas una etiqueta por una imagen, conservas la relación de aspecto de la imagen si configuras el tamaño y el escalamiento de la imagen de la siguiente manera:
- width: Se establece en el producto de los valores
width
yscaleX
de la etiqueta. - height: Se establece en el producto de los valores
height
yscaleY
de la etiqueta. - scale_x: establecido en
1
- scale_y: establecido en
1
De esta manera, la API de Presentaciones se ajusta al aspecto de la imagen según el tamaño visual de la etiqueta, en lugar del tamaño sin ajustar (consulta Cómo reemplazar una etiqueta de forma por una imagen).
Establecer los parámetros de escalamiento en 1
evita que la imagen se escale dos veces.
Esta disposición garantiza que se conserve la relación de aspecto de la imagen y evita que esta exceda el tamaño de la forma de la etiqueta. La imagen tiene el mismo punto central que la forma de etiqueta.
Administrar plantillas
Para las presentaciones de plantillas que la aplicación define y posee, crea la plantilla con una cuenta dedicada que represente la aplicación. Las cuentas de servicio son una buena opción y evitan complicaciones con políticas de Google Workspace que restringen el uso compartido.
Cuando crees instancias de presentaciones a partir de plantillas, usa siempre credenciales de usuario final. Esto brinda a los usuarios control total sobre la presentación resultante y evita problemas de escalamiento relacionados con los límites por usuario en Google Drive.
Para crear una plantilla con una cuenta de servicio, realiza los siguientes pasos con las credenciales de la aplicación:
- Crea una presentación usando presentations.create en la API de Presentaciones.
- Actualiza los permisos para permitir que los destinatarios de la presentación la lean mediante permissions.create en la API de Drive.
- Actualiza los permisos para permitir que los autores de plantillas escriban en ella con permissions.create en la API de Drive.
- Edita la plantilla según sea necesario.
Para crear una instancia de la presentación, realiza los siguientes pasos con las credenciales de usuario:
- Crear una copia de la plantilla usando files.copy en la API de Drive
- Reemplaza los valores usando presentation.batchUpdate en la API de Presentaciones.