Una aplicación útil de la API de Presentaciones de Google 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 la forma en que puedes tomar datos de una fuente externa y, luego, insertarlos en una presentación de plantilla existente. El concepto es similar al de una combinación de correspondencia con un procesador de texto y una hoja de cálculo.
Existen varios motivos por los que este enfoque resulta útil:
Los diseñadores pueden optimizar el diseño de una presentación con facilidad usando el editor de Presentaciones de Google. Esto es mucho más sencillo que ajustar parámetros en tu app para establecer el diseño de las diapositivas renderizadas.
Separar el contenido de la presentación es un principio de diseño conocido que proporciona muchos beneficios.
Una receta básica
A continuación, se muestra un ejemplo de cómo puedes usar la API de Presentaciones para combinar datos en una presentación:
Crea tu presentación como deseas 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 por una etiqueta. Las etiquetas son cuadros de texto o formas con una cadena única. Asegúrate de usar cadenas que no aparezcan normalmente. Por ejemplo,
{{account-holder-name}}
podría ser una buena etiqueta.En tu código, usa la Google Drive API para crear 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 hacer una copia y 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 observar un ejemplo completo (Python) en el que se combinan varios de los conceptos de las secciones siguientes.
Cómo combinar texto
Puedes usar una solicitud replaceAllText
para reemplazar por texto nuevo todas las instancias de una cadena de texto de una presentación. Para realizar combinaciones, esto es más sencillo que encontrar y reemplazar cada instancia de texto de manera individual. Una razón por la que este es el enfoque más sofisticado es que los IDs de los elementos de página son difíciles de predecir, en especial cuando los colaboradores definen mejor y mantienen la presentación de la plantilla.
Ejemplo
En este ejemplo, se usa la API de Drive para copiar una presentación de plantilla y crear una instancia nueva de la presentación. Luego, usa la API de Hojas de cálculo de Google para leer datos de una hoja de cálculo de Hojas de cálculo y, por último, usa la API de Presentaciones para actualizar la nueva presentación.
En el ejemplo, se toman datos de 3 celdas en una fila de un rango con nombre de la hoja de cálculo. Luego, sustituye esos datos en la presentación donde se producen las cadenas {{customer-name}}
, {{case-description}}
o {{total-portfolio}}
.
Apps Script
Go
Java
JavaScript
Node.js
PHP
Python
Ruby
Combina imágenes
También puedes combinar imágenes en tu presentación con una solicitud replaceAllShapesWithImage
. Con esta solicitud se reemplazan por la imagen provista todas las instancias de formas que contengan la cadena de texto proporcionada. Con esta solicitud, de manera automática se posiciona la imagen y se ajusta su escala para que encaje dentro de los límites de la forma de la etiqueta y, al mismo tiempo, se preserve su relación de aspecto.
Ejemplo
En el siguiente ejemplo, se usa la Google Drive API para copiar una presentación de plantilla y crear una instancia nueva de la presentación. Luego, usa la API de Presentaciones para encontrar cualquier forma con el texto {{company-logo}}
y reemplazarla por una imagen del logotipo de una 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
Reemplaza instancias específicas de cuadros de texto o imágenes
Las solicitudes replaceAllText
y replaceAllShapesWithImage
son útiles para reemplazar etiquetas en una presentación, pero a veces solo es necesario reemplazar elementos según otros criterios, como la ubicación en una diapositiva específica.
En estos casos, debes obtener los IDs de las formas de etiquetas que deseas reemplazar. Para el reemplazo de texto, debes borrar el texto existente en esas formas y, luego, insertar el texto nuevo (consulta el ejemplo Editar texto en una forma especificada).
El reemplazo de imágenes es más complejo. Para combinar una imagen, debes hacer lo siguiente:
- Obtén el ID de la forma de etiqueta.
- Copiar la información sobre tamaño y transformación de la etiqueta.
- Agrega tu imagen a la página usando 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, al mismo tiempo, ajustarla al tamaño deseado, es posible que debas tener cuidado, 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 se crean imágenes usando la API de Presentaciones, la adecuación de aspecto se basa únicamente en el tamaño de la imagen, no en los datos de tamaño y transformación. Los datos de tamaño que proporciones en la solicitud createImage
se consideran como el tamaño de imagen deseado. La API ajusta la relación de aspecto de la imagen a este tamaño deseado y, luego, aplica la transformación proporcionada.
Cuando se reemplaza una etiqueta por una imagen, se preserva la relación de aspecto de la imagen configurando el tamaño y el ajuste de escala de esta de la siguiente manera:
- width: Se establece en el producto de
width
yscaleX
de la etiqueta. - height: Se establece en el producto de
height
yscaleY
de la etiqueta. - scale_x: Se establece como
1
- scale_y: Se establece como
1
Esto hace que la API de Presentaciones adecue el aspecto de la imagen conforme al tamaño visual de la etiqueta, en lugar del tamaño sin ajuste de escala (consulta Cómo reemplazar una etiqueta de forma por una imagen).
Fijando los parámetros de ajuste de escala en 1
, se puede evitar que este ajuste se aplique dos veces a la imagen.
Esta disposición garantiza la preservación de la relación de aspecto y evita que la imagen supere el tamaño de la forma de etiqueta. La imagen tiene el mismo punto central que la forma de la etiqueta.
Administrar plantillas
Para 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 las 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 permite a los usuarios controlar por completo la presentación resultante y evita problemas de ajuste de escala relacionados con los límites por usuario en Google Drive.
Para crear una plantilla con una cuenta de servicio, sigue estos pasos con las credenciales de la aplicación:
- Crea una presentación con presentations.create en la API de Presentaciones.
- Actualiza los permisos para permitir que los destinatarios de la presentación la lean con permissions.create en la API de Drive.
- Actualiza los permisos para permitir que los autores de plantillas escriban en ellos con permissions.create en la API de Drive.
- Edita la plantilla según sea necesario.
Para crear una instancia de la presentación, sigue estos pasos con las credenciales del usuario:
- Crea una copia de la plantilla con files.copy en la API de Drive.
- Reemplaza los valores con presentation.batchUpdate en la API de Presentaciones.