L'API Google Slides est particulièrement utile pour fusionner des informations provenant d'une ou de plusieurs sources de données dans un jeu de diapositives basé sur un modèle.
Cette page explique comment récupérer des données à partir d'une source externe et les insérer dans une présentation basée sur un modèle existant. Le concept est semblable à celui d'un publipostage à l'aide d'un traitement de texte et d'une feuille de calcul.
Cette approche présente plusieurs avantages :
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 rendue.
Séparer le contenu 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 telle que vous souhaitez qu'elle apparaisse à l'aide d'un contenu d'espace réservé pour vous aider à la concevoir.
Pour chaque élément de contenu que vous insérerez, remplacez le contenu d'espace réservé par un tag. Les tags sont des zones de texte ou des formes avec 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 créer une copie de la présentation.
Dans votre code, utilisez la
batchUpdateméthode de l'API Slides, avec un ensemble dereplaceAllTextrequêtes, pour effectuer toutes les substitutions de texte dans la présentation. UtilisezreplaceAllShapesWithImagerequêtes pour effectuer des substitutions d'images dans la présentation.
Une fois que vous avez créé un jeu de diapositives contenant des tags, veillez à en créer 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 replaceAllText
requête 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 de remplacer chaque instance de texte individuellement. L'une des raisons pour lesquelles il s'agit de l'approche la plus sophistiquée est que les ID des éléments de page sont difficiles à prévoir, en particulier lorsque les collaborateurs affinent et gèrent la présentation basée sur un modèle.
Exemple
Cet exemple utilise l'API Drive pour copier une présentation basée sur un modèle, ce qui crée une nouvelle 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 remplace 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
replaceAllShapesWithImage
requête. 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'image à l'échelle pour l'adapter aux limites de la forme du tag tout en conservant ses proportions.
Exemple
Cet exemple utilise l'API Google Drive pour copier une présentation basée sur un modèle, ce qui crée une nouvelle instance de la présentation. Il utilise ensuite l'API Slides pour rechercher
toutes les formes contenant le texte {{company-logo}}
et les remplacer par une image de logo d'entreprise. La requête remplace également toute
forme contenant le texte {{customer-graphic}}
par 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 tags dans une présentation, mais
vous n'avez parfois besoin de remplacer des éléments qu'en fonction d'un autre critère, par exemple
en fonction de leur emplacement sur une diapositive spécifique.
Dans ce cas, vous devez récupérer les ID des formes de tag 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 du texte dans une forme spécifiée).
Les remplacements d'images sont plus complexes. Pour fusionner une image, vous devez procéder comme suit :
- Obtenez l'ID de la forme du tag.
- Copiez les informations de taille et de transformation du tag.
- Ajoutez votre image à la page à l'aide des informations de taille et de transformation.
- Supprimez la forme du tag.
Il peut être nécessaire de faire preuve de prudence pour conserver les proportions de l'image tout en la mettant à l'échelle à la taille souhaitée, comme décrit dans la section suivante. 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 ne sont basés que sur la taille de l'image, et non sur les données de taille et de transformation. Les données de taille que vous fournissez
dans la createImage
requête sont considérées comme la taille souhaitée de l'image. L'API ajuste les proportions de l'image à cette taille souhaitée, puis applique la transformation fournie.
Lorsque vous remplacez un tag par une image, vous conservez les proportions de l'image en définissant sa taille et sa mise à l'échelle comme suit :
- width : défini sur le produit des
widthetscaleXdu tag - height : défini sur le produit des
heightetscaleYdu tag - scale_x : défini sur
1 - scale_y : défini sur
1
L'API Slides ajuste ainsi les proportions de l'image en fonction de la
taille visuelle du tag, plutôt que de sa taille non mise à l'échelle (voir
Remplacer un tag de forme par une image).
Définir les paramètres de mise à l'échelle sur 1 empêche l'image d'être mise à l'échelle deux fois.
Cette disposition garantit que les proportions de l'image sont conservées et qu'elle ne dépasse pas la taille de la forme du tag. L'image a le même point central que la forme du tag.
Gérer les modèles
Pour les présentations basées sur un modèle 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 évitent 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 disposent ainsi d'un contrôle total sur la présentation résultante et évitent les problèmes de mise à l'échelle liés aux limites par utilisateur dans Google Drive.
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 du modèle d'y écrire à l'aide de permissions.create dans l'API Drive.
- Modifiez le modèle si nécessaire.
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.