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 plantilla de presentación existente. El concepto es similar al de combinación de correo que usa un procesador de texto y una hoja de cálculo.
Existen varias razones por las cuales 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 establecer el diseño de la diapositiva renderizada.
Separar el contenido de la presentación es un principio de diseño conocido que tiene 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 con contenido de marcador de posición que te ayudará 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 usar cadenas que tienen pocas probabilidades de ocurrir 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 hacer una copia y de usar la API de Presentaciones para manipularla. No uses la API de Presentaciones para manipular la copia de tu “plantilla” principal.
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) en el que se combinan varios de los conceptos de las secciones individuales que aparecen a continuación.
Combinar texto
Puedes usar una solicitud replaceAllText
para reemplazar por texto nuevo todas las instancias de una string 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 los elementos de la 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 nueva instancia de la presentación. Luego, usa la API de Hojas de cálculo de Google para leer datos de un documento de Hojas 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 aparezcan las cadenas {{customer-name}}
, {{case-description}}
o {{total-portfolio}}
.
Apps Script
Go
Java
JavaScript
Node.js
PHP
Python
Rita
Combinar imágenes
También puedes combinar imágenes en tu presentación con una solicitud replaceAllShapesWithImage
. Esta solicitud reemplaza todas las instancias de formas que contienen la string de texto proporcionada por la imagen proporcionada. Con la solicitud, se posiciona y ajusta la imagen automáticamente para que se ajuste a los límites de la forma de la etiqueta y, al mismo tiempo, se conserva la 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 encontrar 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
Rita
Reemplazar el cuadro de texto o las instancias de imagen específicos
Las solicitudes replaceAllText
y replaceAllShapesWithImage
son útiles para reemplazar etiquetas en una presentación, pero a veces solo necesitas reemplazar elementos en función de otro criterio, como ubicarse en una diapositiva específica.
En estos casos, debes recuperar los IDs de las formas de etiquetas que quieras reemplazar. Para reemplazar el texto, borra el texto existente en esas formas y, luego, inserta el texto nuevo (consulta el ejemplo Edita texto en una forma específica).
El reemplazo de imágenes es más complejo. Para combinar en una imagen, debes:
- Obtén el ID de la forma de etiqueta.
- Copia la información sobre tamaño y transformación de la etiqueta.
- Agrega tu imagen a la página con la información de tamaño y transformación.
- Borra la forma de la etiqueta.
Para preservar la relación de aspecto de la imagen y, al mismo tiempo, escalarla al tamaño deseado, puede ser necesario 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 creas imágenes con la API de Presentaciones, los ajustes de aspecto se basan solo en el tamaño de la imagen, no en los datos de tamaño y transformación. Los datos de tamaño que proporcionas en la solicitud createImage
se consideran el tamaño deseado de la imagen. La API se adapta a la relación de aspecto de la imagen al 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; para ello, debes configurar el tamaño y el ajuste de la imagen 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: establecido en
1
- scale_y: establecido en
1
Esto hace que la API de Presentaciones se ajuste al aspecto de la imagen según el tamaño visual de la etiqueta, en lugar de su tamaño sin escala (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 supere 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 define la aplicación y que es de su propiedad, crea la plantilla usando 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 brinda a los usuarios control total sobre la presentación resultante y evita problemas de escalamiento relacionados con 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 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 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:
- Crea una copia de la plantilla con files.copy en la API de Drive.
- Reemplaza los valores usando presentation.batchUpdate en la API de Presentaciones.