L'API Google Slides peut être utilisée pour fusionner des informations provenant d'une ou de plusieurs sources de données dans une présentation modélisée.
Cette page explique comment récupérer des données à partir d'une source externe et les insérer dans un modèle de présentation existant. Le concept est semblable à celui d'un publipostage utilisant 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. Cette méthode est beaucoup plus simple que de régler les paramètres dans votre application pour définir la conception des diapositives affichées.
Séparer le contenu de la présentation est un principe de conception bien connu qui présente de nombreux avantages.
Une recette simple
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 voulez qu'elle apparaisse en utilisant du 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 balises sont des zones de texte ou des formes avec une chaîne unique. Veillez à utiliser des chaînes qui ne se produisent probablement pas normalement. Par exemple,
{{account-holder-name}}
peut être une bonne balise.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'image 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 d'utiliser l'API Slides pour la manipuler. N'utilisez pas l'API Slides pour manipuler votre copie principale de "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 il s'agit de l'approche la plus sophistiquée est que les ID d'élément de page sont difficiles à prédire, en particulier lorsque les collaborateurs affinent et maintiennent 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. Il utilise ensuite l'API Google Sheets pour lire les données d'une feuille de calcul Sheets, et enfin l'API Slides pour mettre à jour la nouvelle présentation.
L'exemple prend les données de trois cellules d'une ligne d'une plage nommée de la feuille de calcul. Il les substitue ensuite 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 redimensionne automatiquement l'image pour qu'elle s'adapte aux limites de la forme de tag, tout en conservant 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 trouver n'importe quelle forme contenant le texte {{company-logo}}
et la remplacer par l'image du logo de l'entreprise. La requête remplace également toutes les formes par le texte {{customer-graphic}}
par une autre image.
Apps Script ;
Go
Java
JavaScript
Node.js
PHP
Python
Ruby
Remplacer des zones de texte ou des instances d'image spécifiques
Les requêtes replaceAllText
et replaceAllShapesWithImage
sont utiles pour remplacer des balises tout au long d'une présentation, mais parfois, vous ne devez remplacer des éléments que selon un autre critère, par exemple lorsqu'ils se trouvent sur une diapositive spécifique.
Dans ce cas, vous devez récupérer les ID des formes de balise que vous souhaitez remplacer. Pour remplacer du 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 dans une image, vous devez:
- Obtenez l'ID de la forme de tag.
- Copiez les informations de taille et de transformation du tag.
- Ajoutez votre image à la page en utilisant les informations de taille et de transformation.
- Supprimez la forme de tag.
La conservation du format de l'image tout en la redimensionnant à la taille souhaitée peut nécessiter quelques précautions, comme décrit dans la section suivante. Consultez également cet exemple : Remplacer un tag de forme par une image.
Conserver le format
Lorsque vous créez des images à l'aide de l'API Slides, l'ajustement des proportions se base uniquement 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 requête createImage
sont considérées comme la taille souhaitée de l'image. L'API ajuste 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éfini sur le produit des attributs
width
etscaleX
du tag - height: défini sur le produit des valeurs
height
etscaleY
du tag - scale_x: défini sur
1
- scale_y: défini sur
1
Ainsi, l'API Slides adaptera l'image à la taille visuelle du tag plutôt qu'à sa taille non mise à l'échelle (voir Remplacer un tag de forme par une image).
Définir les paramètres de scaling sur 1
évite que l'image ne soit mise à l'échelle deux fois.
Cette disposition garantit que le format de l'image est préservé et l'empêche de dépasser la taille de la forme de tag. L'image a le même point central que la forme du tag.
Gérer les modèles
Pour les présentations de modèle définies et détenues par l'application, créez le modèle à l'aide d'un compte dédié représentant l'application. Les comptes de service constituent 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 des résultats 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 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 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.