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 cómo 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 es útil:
Los diseñadores pueden ajustar el diseño de una presentación con facilidad mediante el editor de Presentaciones de Google. Esto es mucho más fácil que ajustar los parámetros de tu app para establecer el diseño de la diapositiva renderizada.
Separar el contenido de la presentación es un principio de diseño conocido con 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 la presentación como deseas que aparezca con 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 es probable que aparezcan con normalidad. Por ejemplo,
{{account-holder-name}}podría ser una buena etiqueta.En tu código, usa la API de Google Drive para crear una copia de la presentación.
En tu código, usa el
batchUpdatemétodo de la API de Presentaciones, con un conjunto dereplaceAllTextsolicitudes, para realizar todas las sustituciones de texto en la presentación. UsareplaceAllShapesWithImagesolicitudes 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 usar la API de Presentaciones para manipularla. No uses la API de Presentaciones para manipular tu copia "plantilla" principal.
En las siguientes secciones, se incluyen fragmentos de código que ilustran parte de este proceso. También puedes mirar el video anterior para ver un ejemplo completo (en Python) que combina varios de los conceptos de las siguientes secciones.
Combinar texto
Puedes usar una replaceAllText
solicitud para reemplazar todas las instancias de una cadena de texto determinada en una
presentación por texto nuevo. Para las combinaciones, esto es más simple que buscar y reemplazar cada instancia de texto de forma individual. Uno de los motivos por los que este es el enfoque más sofisticado es que los IDs de los elementos de la página son difíciles de predecir, en especial, a medida que los colaboradores refinan 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, se 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, se 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 en la hoja de cálculo. Luego, se sustituyen esos datos en la presentación donde aparecen
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 con una
replaceAllShapesWithImage
solicitud. Esta solicitud reemplaza todas las instancias de formas que contienen la cadena de texto proporcionada por la imagen proporcionada. La solicitud posiciona y ajusta automáticamente la imagen para que quepa dentro de los límites de la forma de la etiqueta, mientras conserva la relación de aspecto de la imagen.
Ejemplo
En este ejemplo, se usa la API de Google Drive para copiar una presentación de plantilla y crear una instancia nueva de la presentación. Luego, se usa la API de Presentaciones para encontrar
cualquier forma con 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 cuadros de texto o imágenes
Las solicitudes replaceAllText
y replaceAllShapesWithImage
son útiles para reemplazar etiquetas en una presentación, pero
a veces solo necesitas reemplazar elementos según otro criterio, como
estar ubicados en una diapositiva específica.
En estos casos, debes recuperar los IDs de las formas de etiqueta que deseas reemplazar. Para los reemplazos de texto, borra el texto existente en esas formas y, luego, inserta el texto nuevo (consulta el ejemplo Editar texto en una forma especificada).
Los reemplazos de imágenes son más complejos. Para combinar una imagen, debes hacer lo siguiente:
- Obtener el ID de la forma de la etiqueta
- Copiar el tamaño y transformar la información de la etiqueta
- Agregar la imagen a la página con el tamaño y transformar la información
- Borrar la forma de la etiqueta
Conservar la relación de aspecto de la imagen mientras se ajusta al tamaño deseado puede requerir cierta atención, como se describe en la siguiente sección. Consulta también este ejemplo: Reemplazar una etiqueta de forma por una imagen.
Conservar la relación de aspecto
Cuando creas imágenes con la API de Presentaciones, los ajustes de aspecto se basan solo en el tamaño de la imagen, no en el tamaño y la transformación de los datos. Los datos de tamaño que proporcionas
en la createImage
solicitud se consideran 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 configurando el tamaño y el ajuste de escala de la imagen de la siguiente manera:
- ancho: Se configura como el producto del
widthy elscaleXde la etiqueta. - altura: Se configura como el producto del
heighty elscaleYde la etiqueta. - scale_x: Se configura como
1. - scale_y: Se configura como
1.
Esto hace que la API de Presentaciones ajuste la imagen según el
tamaño visual de la etiqueta, en lugar de su tamaño sin ajustar (consulta
Reemplazar una etiqueta de forma por una imagen).
Si configuras los parámetros de ajuste de escala en 1, se evita que la imagen se ajuste dos veces.
Esta disposición garantiza que se conserve la relación de aspecto de la imagen y evita que la imagen supere el tamaño de la forma de la etiqueta. La imagen tiene el mismo punto central que la forma de la etiqueta.
Administrar plantillas
Para las presentaciones de plantilla 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 creas instancias de presentaciones a partir de plantillas, siempre usa credenciales de usuario final. Esto les brinda a los usuarios un control total sobre 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 la plantilla 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, 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.