L'API Google Slides peut être utilisée pour fusionner des informations provenant d'une ou plusieurs sources de données dans une présentation basée sur un modèle.
Cette page explique comment insérer des données provenant d'une source externe dans une présentation modèle existante. Le concept est semblable à celui d'un publipostage à l'aide d'un traitement de texte et d'une feuille de calcul.
Cette approche est utile pour plusieurs raisons :
Les concepteurs peuvent facilement affiner la conception d'une présentation à l'aide de l'éditeur Google Slides. C'est beaucoup plus simple que de régler les paramètres de votre application pour définir la conception de la diapositive affichée.
La séparation du contenu et de la présentation est un principe de conception bien connu qui présente de nombreux avantages.
Recette de base
Voici un exemple d'utilisation de l'API Slides pour fusionner des données dans une présentation :
Créez votre présentation comme vous le souhaitez, en utilisant du contenu de substitution pour vous aider à la concevoir.
Pour chaque élément de contenu que vous insérerez, remplacez le contenu de l'espace réservé par un tag. Les tags sont des zones de texte ou des formes comportant une chaîne unique. Veillez à utiliser des chaînes peu susceptibles de se produire normalement. Par exemple,
{{account-holder-name}}
peut être un bon tag.Dans votre code, utilisez l'API Google Drive pour copier la présentation.
Dans votre code, utilisez la méthode
batchUpdate
de l'API Slides, avec un ensemble de requêtesreplaceAllText
, pour effectuer toutes les substitutions de texte dans la présentation. Utilisez les requêtesreplaceAllShapesWithImage
pour remplacer des images dans toute la présentation.
Une fois que vous avez créé une présentation avec des tags, veillez à en faire une copie et à utiliser l'API Slides pour la manipuler. N'utilisez pas l'API Slides pour manipuler votre copie "modèle" principale.
Les sections suivantes incluent des extraits de code qui illustrent une partie de ce processus. Vous pouvez également regarder la vidéo ci-dessus pour voir un exemple complet (Python) combinant plusieurs concepts des sections individuelles ci-dessous.
Fusionner du texte
Vous pouvez utiliser une requête replaceAllText
pour remplacer toutes les instances d'une chaîne de texte donnée dans une présentation par un nouveau texte. Pour les fusions, cette méthode est plus simple que de rechercher et remplacer chaque instance de texte individuellement. Cette approche est la plus sophistiquée, car les ID des éléments de page sont difficiles à prédire, en particulier lorsque les collaborateurs affinent et gèrent la présentation du modèle.
Exemple
Cet exemple utilise l'API Drive pour copier un modèle de présentation et créer une instance de la présentation. Il utilise ensuite l'API Google Sheets pour lire les données d'une feuille de calcul Sheets, puis l'API Slides pour mettre à jour la nouvelle présentation.
L'exemple extrait les données de trois cellules d'une ligne d'une plage nommée dans la feuille de calcul. Il substitue ensuite ces données dans la présentation chaque fois que les chaînes {{customer-name}}
, {{case-description}}
ou {{total-portfolio}}
apparaissent.
Apps Script
Go
Java
JavaScript
Node.js
PHP
Python
Ruby
Fusionner des images
Vous pouvez également fusionner des images dans votre présentation à l'aide d'une requête replaceAllShapesWithImage
. Cette requête remplace toutes les instances de formes contenant la chaîne de texte fournie par l'image fournie. La requête positionne et met automatiquement à l'échelle l'image pour qu'elle s'adapte aux limites de la forme de la balise tout en conservant le format de l'image.
Exemple
Cet exemple utilise l'API Google Drive pour copier un modèle de présentation et créer une instance de la présentation. Il utilise ensuite l'API Slides pour trouver toutes les formes contenant le texte {{company-logo}}
et les remplacer par une image du logo de l'entreprise. La requête remplace également toute forme par le texte {{customer-graphic}}
avec une autre image.
Apps Script
Go
Java
JavaScript
Node.js
PHP
Python
Ruby
Remplacer des instances spécifiques de zones de texte ou d'images
Les requêtes replaceAllText
et replaceAllShapesWithImage
sont utiles pour remplacer des balises dans une présentation, mais il arrive que vous n'ayez besoin de remplacer des éléments que selon un autre critère, par exemple s'ils se trouvent sur une diapositive spécifique.
Dans ce cas, vous devez récupérer les ID des formes de balises que vous souhaitez remplacer. Pour les remplacements de texte, supprimez le texte existant dans ces formes, puis insérez le nouveau texte (voir l'exemple Modifier le texte dans une forme spécifique).
Les remplacements d'images sont plus complexes. Pour fusionner une image, vous devez :
- Obtenez l'ID de la forme de la balise.
- Copiez les informations sur la taille et la transformation à partir de la balise.
- Ajoutez votre image à la page en utilisant les informations de taille et de transformation.
- Supprimez la forme du tag.
Comme décrit dans la section suivante, il peut être nécessaire de faire attention à préserver les proportions de l'image lors de sa mise à l'échelle à la taille souhaitée. Consultez également cet exemple : Remplacer un tag de forme par une image.
Conserver les proportions
Lorsque vous créez des images à l'aide de l'API Slides, les ajustements des proportions sont basés uniquement sur la taille de l'image, et non sur la taille et les données de transformation. Les données de taille que vous fournissez dans la requête createImage
sont considérées comme la taille souhaitée de l'image. L'API adapte le format de l'image à cette taille souhaitée, puis applique la transformation fournie.
Lorsque vous remplacez un tag par une image, vous conservez le format de l'image en définissant sa taille et sa mise à l'échelle comme suit :
- width : définie sur le produit des
width
etscaleX
de la balise - height : défini sur le produit de
height
etscaleY
de la balise - scale_x : défini sur
1
- scale_y : défini sur
1
L'API Slides ajuste alors l'image en fonction de la taille visuelle de la balise, plutôt que de sa taille non mise à l'échelle (voir Remplacer une balise de forme par une image).
Si vous définissez les paramètres de scaling sur 1
, l'image ne sera pas mise à l'échelle deux fois.
Cet arrangement garantit que les proportions de l'image sont conservées et qu'elle ne dépasse pas la taille de la forme de la balise. Le centre de l'image est identique à celui de la forme du tag.
Gérer les modèles
Pour les présentations de modèles que l'application définit et possède, créez le modèle à l'aide d'un compte dédié représentant l'application. Les comptes de service sont un bon choix et permettent d'éviter les complications liées aux règles Google Workspace qui limitent le partage.
Lorsque vous créez des instances de présentations à partir de modèles, utilisez toujours les identifiants de l'utilisateur final. Les utilisateurs ont ainsi un contrôle total sur la présentation obtenue et les problèmes de mise à l'échelle liés aux limites par utilisateur dans Google Drive sont évités.
Pour créer un modèle à l'aide d'un compte de service, procédez comme suit avec les identifiants de l'application :
- Créez une présentation à l'aide de presentations.create dans l'API Slides.
- Mettez à jour les autorisations pour permettre aux destinataires de la présentation de la lire à l'aide de permissions.create dans l'API Drive.
- Mettez à jour les autorisations pour permettre aux auteurs de modèles d'y écrire à l'aide de permissions.create dans l'API Drive.
- Modifiez le modèle selon vos besoins.
Pour créer une instance de la présentation, procédez comme suit avec les identifiants de l'utilisateur :
- Créez une copie du modèle à l'aide de files.copy dans l'API Drive.
- Remplacez les valeurs à l'aide de presentation.batchUpdate dans l'API Slides.