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 basée sur un modèle.
Cette page explique comment extraire des données d'une source externe et les insérer dans une présentation de 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 d'ajuster les paramètres de votre application pour définir la conception des diapositives affichées.
La séparation du 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 du contenu d'espace réservé pour vous aider à la concevoir.
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 associées à une chaîne unique. Veillez à utiliser des chaînes qui ne sont pas susceptibles de s'afficher 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 dans la présentation. Utilisez des requêtesreplaceAllShapesWithImage
pour effectuer des substitutions d'images tout au long de la présentation.
Une fois que vous avez créé une présentation avec des balises, veillez à en créer une copie et à 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 certains de ces processus. Vous pouvez également regarder la vidéo ci-dessus pour voir un exemple complet (Python) combinant plusieurs des concepts des sections 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 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 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, puis l'API Slides pour mettre à jour la nouvelle présentation.
L'exemple utilise 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 partout où 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 préservant 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 nouvelle instance de la présentation. Il utilise ensuite l'API Slides pour rechercher toute forme contenant le texte {{company-logo}}
et la remplacer par une image du logo de l'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 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 arrive que vous ne souhaitiez remplacer des éléments que selon 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 balise que vous souhaitez remplacer. Pour les remplacements de texte, vous devez supprimer le texte existant dans ces formes, puis insérer le nouveau texte (voir l'exemple Modifier le texte d'une forme spécifiée).
Les remplacements d'images sont plus complexes. Pour fusionner une image, procédez comme suit:
- Obtenez l'ID de la forme de la balise.
- Copiez la taille et les informations de transformation de la balise.
- Ajoutez votre image à la page en utilisant les informations de taille et de transformation.
- Supprimez la forme de la balise.
Il peut être nécessaire de prendre certaines précautions pour préserver le format de l'image tout en la redimensionnant à la taille souhaitée, 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, les formats adaptés 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 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 une balise par une image, vous conservez le format de l'image en définissant sa taille et son échelle comme suit:
- width: défini sur le produit de
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 donc l'image en fonction de la taille visuelle de la balise, et non de sa taille non redimensionnée (voir la section Remplacer une balise 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 le format de l'image est préservé et empêche l'image de dépasser la taille de la forme de la balise. L'image a le même point central que 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 é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 ont ainsi un contrôle total sur la présentation obtenue 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 autoriser les destinataires de la présentation à la lire à l'aide de permissions.create dans l'API Drive.
- Modifiez les autorisations pour autoriser les auteurs de modèles à 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 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.