Créez des documents Google à partir d’une feuille Google

Video convert google sheet to google doc

Votre entreprise peut utiliser Google Apps Script pour extraire des données des lignes et des colonnes d’une feuille Google et créer des documents Google personnalisés qui ne contiennent que les informations nécessaires. Cela peut rendre votre entreprise et vos collaborateurs plus productifs.

Imaginez un détaillant de taille moyenne qui opère à la fois en ligne et en magasin. La société a développé une feuille Google avec un plan marketing détaillé pour chacun de ses principaux fournisseurs. Le plan décrit les tactiques marketing spécifiques par mois et inclut le budget de chaque tactique.

L’un des spécialistes marketing de l’entreprise est chargé de fournir à chaque fournisseur une proposition marketing. Si le fournisseur accepte la proposition, il paiera pour la publicité coopérative, ce qui représente généralement la moitié du coût de la promotion prévue.

Cette tâche semble assez simple. Mais que se passerait-il si ce spécialiste marketing devait créer des propositions pour 100 fournisseurs ?

Cela nécessiterait de saisir (ou du moins de copier-coller) les données de la feuille Google vers chacun des 100 documents Google manuellement, une tâche très chronophage.

Alternativement, un marketeur pourrait écrire un court script Google Apps et automatiser le processus.

Google Apps Script

Google Apps Script est un langage de script simple basé sur JavaScript. Selon Google, il vous permet d’augmenter la puissance de vos applications Google préférées, y compris Docs et Sheets.

En pratique, cela signifie que vous pouvez utiliser Google Apps Script pour personnaliser les applications Google et créer de nouvelles fonctionnalités. Dans cet exemple, je vais utiliser les données d’une feuille de calcul d’exemple sur les tactiques marketing et les utiliser pour créer plusieurs propositions marketing.

Associer Google Apps Script

Si vous utilisez Google Apps Script pour la première fois, vous devrez l’associer à votre Google Drive.

Pour cela :

  • Ouvrez Google Drive.
  • Cliquez sur l’icône en forme de clé à molette.
  • Cliquez sur « Paramètres ».
  • Cliquez sur « Gérer les applications ».
  • Cliquez sur « Connecter d’autres applications ».
  • Recherchez « Google Apps Script ».
  • Activez-le.

Créer un modèle de document Google

Maintenant que vous disposez d’une feuille de calcul remplie de données et que vous avez associé Google Apps Script à votre Google Drive, il est temps de créer un modèle pour les plans marketing dans Google Docs.

Pour ce faire, créez simplement un document Google contenant toutes les parties répétitives de la proposition marketing. Si vous avez besoin d’utiliser des données de la feuille de calcul, comme le nom de l’entreprise du fournisseur, utilisez un simple espace réservé.

Sur l’image ci-dessous, ##Fournisseur## est utilisé comme espace réservé pour le champ fournisseur de la feuille de calcul.

Image

Créer un script Google Apps

Pour démarrer un nouveau script Google Apps, ouvrez Google Drive, faites un clic droit, sélectionnez « Plus », puis sélectionnez « Google Apps Script ». Si vous ne voyez pas Google Apps Script comme option, assurez-vous de l’avoir correctement associé à votre Google Drive.

Lorsque vous cliquez sur Google Apps Script, vous verrez un nouvel onglet avec l’éditeur Apps Script. Ensuite, activez l’API des feuilles de calcul Google.

Dans l’éditeur de Google Apps Script :

  • Cliquez sur « Ressources ».
  • Cliquez sur « Services Google avancés ».
  • Localisez « API Sheets » et activez-la.
  • Cliquez sur « Google API Console ».
  • Tapez « Sheets API » dans la barre de recherche.
  • Cliquez sur « Activer l’API ».
  • Revenez à l’éditeur et cliquez sur le bouton « OK ».

Définir les variables pour la feuille et le modèle

En revenant à l’éditeur, nous commencerons par une fonction appelée « createDocument() ».

Cette fonction commence par trois variables : « headers », « tactics » et « templateId ».

var headers = Sheets.Spreadsheets.Values.get('1U-6...', 'A2:I2');
var tactics = Sheets.Spreadsheets.Values.get('1U-6...', 'A3:I6');
var templateId = '18PzF...';

Les deux premières variables accèdent à la feuille Google contenant nos tactiques marketing. « Sheets.Spreadsheets.Values.get() » accède à la feuille et accepte deux paramètres.

Le premier paramètre est l’ID de la feuille de calcul. Le moyen le plus simple de trouver cet ID est de regarder dans la barre d’adresse de votre navigateur Web lorsque vous ouvrez la feuille.

Le deuxième paramètre décrit les lignes que nous allons accéder. Dans cet exemple, les en-têtes se trouvent dans la ligne 2 entre les colonnes A et I, donc « A2:I2 ». Les valeurs que nous voulons accéder se trouvent de la ligne 3 à la ligne 6, également de la colonne A à la colonne I. Nous utilisons donc « A3:I6 » pour définir la zone.

La troisième variable, « templateId », est l’ID du document modèle que vous avez créé. Vous pouvez également trouver cet ID dans la barre d’adresse lorsque vous avez le modèle ouvert.

Parcourir les lignes de la feuille

Google Apps Script ne possède pas toutes les fonctionnalités des versions les plus récentes de JavaScript. Ainsi, bien que nous aimerions utiliser une fonction de tableau pour travailler avec les données de la feuille, nous devrons plutôt utiliser une boucle « for ».

for(var i = 0; i < tactics.values.length; i++){

Nous commençons une boucle « for » en définissant la valeur initiale d’une variable, dans ce cas « i ». Ensuite, nous définissons la limite de la boucle sur la longueur de notre tableau. Enfin, nous incrémentons la variable « i » jusqu’à ce qu’elle atteigne la limite.

L’éditeur Google Apps Script dispose de quelques outils de débogage et de développement. Donc, si vous voulez voir ce que renvoie l’API de la feuille, vous pouvez accéder à un journal.

Logger.log(tactics);

Vous devrez exécuter la fonction, puis cliquer sur « Affichage, Journaux » pour voir la sortie.

Revenons à la boucle, nous créons une variable pour stocker le nom du fournisseur.

var supplier = tactics.values[i][0];

L’objet « tactics » a une propriété « values », qui est un tableau de tableaux représentant chaque ligne que nous avons demandée à l’API des feuilles. L’itérateur « [i] » sera la première ligne la première fois que la boucle s’exécute et la deuxième ligne la fois suivante.

« [0] » représente la première colonne de la feuille, qui est le nom du fournisseur. Plus précisément, puisque nous avons commencé à la ligne 3 pour « tactics », la première ligne et la première colonne seront A3, qui contient le nom du fournisseur « Awesome Inc. ». La prochaine fois que la boucle s’exécutera, « tactics.values[i][0] » pointera vers A4 et le fournisseur « Best Company ».

Copier le modèle

La ligne suivante du code va copier notre modèle et récupérer l’ID du document copié.

var documentId = DriveApp.getFileById(templateId).makeCopy().getId();

Remarquez que nous utilisons la variable « templateId » du modèle ci-dessus. De plus, nous utilisons l’API DriveApp. Vous devrez peut-être l’activer de la même manière que vous avez activé l’API des feuilles.

Cette commande récupère d’abord le document modèle en utilisant l’ID du modèle. Ensuite, elle fait une copie du modèle dans le même répertoire Drive, et enfin, elle récupère l’ID du nouveau document pour que nous puissions l’utiliser ultérieurement.

Pour le moment, le nom de notre nouveau document copié est « Copie de » suivi du nom que vous avez donné à votre modèle, ce qui n’est pas très utile, alors nous allons changer le nom du fichier.

DriveApp.getFileById(documentId).setName('2018 ' + supplier + ' Marketing Proposal');

Nous récupérons d’abord le fichier en utilisant l’ID du document que nous avons capturé à l’étape précédente. Ensuite, nous définissons le nom. Remarquez que Google Apps Script utilise le même style de concaténation que JavaScript, nous pouvons donc concaténer des chaînes comme « 2018 » avec des variables comme « supplier ».

Mettre à jour le modèle

La ligne suivante de l’Apps Script accède au corps du nouveau document.

var body = DocumentApp.openById(documentId).getBody();

Remarquez que nous utilisons à nouveau l’ID du document que nous avons capturé lors de la copie du modèle, mais cette fois nous interagissons avec l’API DocumentApp.

Notre premier changement consiste à mettre à jour chaque instance de notre espace réservé pour le nom du fournisseur, ##Fournisseur##, dans le modèle.

body.replaceText('##Fournisseur##', supplier)

Remarquez que « replaceText » prend deux paramètres. D’abord, il y a le texte que nous voulons remplacer. Ensuite, il y a la variable représentant le nom du fournisseur.

La dernière étape consiste à ajouter la liste des tactiques à la proposition marketing. Pour cela, nous appelons une deuxième fonction, « parseTactics », en lui passant les valeurs d’en-tête (par exemple, « fournisseur », « publicité YouTube », « publicité Hulu »), la ligne de tactiques marketing et le corps du document de proposition marketing.

parseTactics(headers.values[0], tactics.values[i], body);

La fonction « parseTactics » boucle sur chaque tactique de la ligne et l’ajoute à la proposition marketing si elle a une valeur.

function parseTactics(headers, tactics, body){
  for(var i = 1; i < tactics.length; i++){
      {tactics[i] != '' && body.appendListItem(headers[i] + ' | ' + tactics[i] + ' net').setGlyphType(DocumentApp.GlyphType.BULLET);
  }
}

Remarquez que nous définissons la valeur initiale de la variable « i » à 1 plutôt que 0. C’est parce que la position 0 dans le tableau est le nom du fournisseur. Nous voulons commencer par la position 1, qui sera la valeur de la tactique YouTube Commercial.

for(var i = 1; i < tactics.length; i++)

Nous utilisons une technique appelée « short-circuit evaluation » pour ajouter chaque tactique.

{tactics[i] != '' && body.appendListItem(headers[i] + ' | ' + tactics[i] + ' net').setGlyphType(DocumentApp.GlyphType.BULLET);

D’abord, nous vérifions si la tactique a une valeur. Plus précisément, nous demandons si cette « tactique n’est pas égale à une chaîne vide ».

tactics[i] != ''

Ensuite, nous utilisons l’opérateur « et », « && ». Cela signifie que les deux choses doivent être vraies. Ainsi, si le champ des tactiques est vide, cela n’est pas vrai et notre prochaine ligne de code ne s’exécutera pas.

body.appendListItem(headers[i] + ' | ' + tactics[i] + ' net')

La section suivante du code ajoute un élément de liste (comme une liste à puces) au document de proposition marketing. Par défaut, l’API veut créer une liste ordonnée, comme 1, 2, 3. Nous définissons donc le type de puce de liste sur BULLET.

.setGlyphType(DocumentApp.GlyphType.BULLET);

Créer les documents

Nous avons terminé le code nécessaire pour générer des propositions marketing à partir de la feuille de calcul. Il nous suffit de lancer notre code.

Dans l’éditeur Google Apps Script, sélectionnez « createDocument » dans le menu déroulant et cliquez sur « Run ».

Cela générera quatre exemples de propositions marketing dans le même dossier que notre modèle.

Chacune des propositions marketing inclura le nom du fournisseur et les tactiques que le département marketing avait en tête pour eux.

Voici le script complet utilisé dans cet exemple.

function createDocument() {
  var headers = Sheets.Spreadsheets.Values.get('1U-6Fa6GF62dLI0NAhAMWdaSsEWvY4FDhDWLUVxaCv24', 'A2:I2');
  var tactics = Sheets.Spreadsheets.Values.get('1U-6Fa6GF62dLI0NAhAMWdaSsEWvY4FDhDWLUVxaCv24', 'A3:I6');
  var templateId = '18PzFAptRi36PR8CvJ2rVr3IVCGBMCNoCsG7UpOymPHc';

  for(var i = 0; i < tactics.values.length; i++){
    var supplier = tactics.values[i][0];

    //Make a copy of the template file
    var documentId = DriveApp.getFileById(templateId).makeCopy().getId();

    //Rename the copied file
    DriveApp.getFileById(documentId).setName('2018 ' + supplier + ' Marketing Proposal');

    //Get the document body as a variable
    var body = DocumentApp.openById(documentId).getBody();

    //Insert the supplier name
    body.replaceText('##Supplier##', supplier)

    //Append tactics
    parseTactics(headers.values[0], tactics.values[i], body);
  }
}

function parseTactics(headers, tactics, body){
  for(var i = 1; i < tactics.length; i++){
    {tactics[i] != '' && body.appendListItem(headers[i] + ' | ' + tactics[i] + ' net').setGlyphType(DocumentApp.GlyphType.BULLET);
  }
}

Maintenant, vous pouvez automatiser la création de propositions marketing à partir de vos feuilles de calcul Google en utilisant Google Apps Script ! N’oubliez pas d’adapter le code à votre structure de données spécifique et de l’exécuter dans l’éditeur Google Apps Script.

Articles en lien