Une application utile de l'API Google Slides consiste à fusionner des informations provenant d'une ou de plusieurs sources de données dans un modèle de présentation.
Cette page explique comment récupérer des données d'une source externe et les insérer dans un modèle de présentation existant. Le concept est semblable à celui du publipostage qui utilise un traitement de texte et 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 facile que de régler les paramètres de votre application pour définir la conception de la diapositive affichée.
Séparer le contenu de la présentation est un principe de conception bien connu qui présente de nombreux avantages.
Une 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 un contenu d'espace réservé pour vous aider avec la conception.
Pour chaque élément de contenu que vous allez insérer, remplacez le contenu de l'espace réservé par une balise. 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 méthode
batchUpdate
de l'API Slides, avec un ensemble de requêtesreplaceAllText
, pour effectuer toutes les substitutions de texte tout au long de la présentation. Utilisez les requêtesreplaceAllShapesWithImage
pour effectuer des substitutions d'images tout au long de la présentation.
Une fois que vous avez créé une présentation contenant des tags, assurez-vous d'en faire une copie et utilisez l'API Slides pour la manipuler. N'utilisez pas l'API Slides pour manipuler la copie principale de votre "modèle".
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 des concepts des sections individuelles ci-dessous.
Fusionner le 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, c'est plus simple que de rechercher et de remplacer chaque instance de texte individuellement. L'une des raisons pour lesquelles cette approche est la plus sophistiquée est que les ID d'élément 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, créant ainsi une nouvelle instance de la présentation. Ensuite, il utilise l'API Google Sheets pour lire les données d'une feuille de calcul Sheets, puis utilise l'API Slides pour mettre à jour la nouvelle présentation.
Cet exemple prend les données de trois cellules sur une ligne d'une plage nommée de 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 les 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 à l'échelle automatiquement l'image pour qu'elle respecte les limites de la forme du tag, tout en préservant ses proportions.
Exemple
Cet exemple utilise l'API Google Drive pour copier un modèle de présentation, créant ainsi une nouvelle instance de la présentation. Il utilise ensuite l'API Slides pour rechercher n'importe quelle forme avec le texte {{company-logo}}
et le remplacer par le logo de l'entreprise. La requête remplace également toute forme par le texte {{customer-graphic}}
par une image différente.
Apps Script ;
Go
Java
JavaScript
Node.js
PHP
Python
Ruby
Remplacer des instances de zone de texte ou d'image spécifiques
Les requêtes replaceAllText
et replaceAllShapesWithImage
sont utiles pour remplacer des balises dans une présentation, mais il suffit parfois de remplacer des éléments en fonction d'un autre critère, comme 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 (consultez l'exemple Modifier le texte dans une forme spécifiée).
Les remplacements d'images sont plus complexes. Pour fusionner une image, vous devez:
- Permet d'obtenir l'ID de la forme de tag.
- Copiez les informations de taille et de transformation à partir du tag.
- Ajoutez votre image à la page, en utilisant les informations de taille et de transformation.
- Supprimez la forme du tag.
Conserver le format de l'image tout en la redimensionnant à la taille souhaitée peut nécessiter un peu de soin, comme décrit dans la section suivante. Consultez également l'exemple suivant : 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 d'aspect ne sont basés que 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 correspondant à la taille souhaitée de l'image. L'API adapte le format de l'image à la 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éfinie sur le produit des éléments
width
etscaleX
de la balise. - height: défini sur le produit des paramètres
height
etscaleY
de la balise. - scale_x: définie sur
1
- scale_y: définie sur
1
Ainsi, l'API Slides ajuste l'aspect 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 scaling sur 1
empêche l'image d'être mise à l'échelle deux fois.
Cette disposition garantit que le format de l'image est préservé et empêche l'image de dépasser 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 modèles de présentation définis par l'application et lui appartenant, 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 avec les 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. Cela donne aux utilisateurs un contrôle total sur la présentation qui en résulte et évite les problèmes de scaling 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 la méthode presentations.create dans l'API Slides.
- Mettez à jour les autorisations pour permettre aux destinataires de la présentation de la lire à l'aide de la méthode permissions.create dans l'API Drive.
- Mettez à jour les autorisations pour autoriser les auteurs du modèle à 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.