Automatisez le remplissage d’un modèle de document Google à partir des données d’une feuille de calcul Google

Video auto populate google doc from google sheet

Publié le 29 septembre 2020

Dans cet article, je vais vous expliquer comment automatiser le remplissage de modèles de documents Google avec des données extraites d’une feuille de calcul Google en utilisant Google Apps Script. Si votre projet implique un formulaire, je vous recommande de consulter également notre article sur “Auto Fill a Google Doc from Google Form Submissions”.

Préparez la feuille de calcul

Dans ce tutoriel, nous partirons d’une feuille de calcul contenant des données sur les employés, telles que leur prénom, leur nom de famille, leur date d’embauche et leur salaire horaire. J’ai également créé une colonne vide appelée “Lien du document” à la fin de la plage de données pour stocker un lien vers le document Google que notre script va créer.

spreadsheet

En stockant le lien du document dans la feuille de calcul, nous disposons d’un moyen pratique d’accéder au document créé. Nous pouvons également utiliser ce champ de données pour contrôler quel document est créé lorsque nous exécutons le code à partir des options du menu complémentaire. Dans ce tutoriel, nous ne créerons de nouveaux documents que lorsque la ligne de la feuille de calcul ne contient pas déjà d’URL dans la colonne “Lien du document”.

Création d’un modèle de document Google

Le meilleur avantage de la population d’un modèle de document Google est que vous pouvez créer des documents assez sophistiqués et fusionner des données dans les copies que vous créez. Nous allons créer des jetons de remplacement de variables en entourant les variables que nous voulons remplacer de deux ensembles d’accolades : {{Prénom}}.

La clé ici est que le texte que vous utilisez dans le document Google doit être unique au document, et il doit correspondre exactement à la chaîne que nous utilisons dans notre code, y compris les espaces blancs, la casse, etc.

Ce modèle de document sera copié à chaque exécution de notre script, puis nous utiliserons DocumentApp pour rechercher nos jetons de remplacement dans le corps du document, puis nous remplacerons ces jetons par des valeurs de notre feuille de calcul.

Écriture du code dans Google Apps Script

Notre script pour ce tutoriel comporte deux parties principales : la fonction qui ajoute une option de menu à notre feuille de calcul pour exécuter facilement notre script, et la fonction qui traite les données de notre feuille de calcul et remplit automatiquement les modèles de documents. Ce code doit être ajouté à l’éditeur de scripts accessible via le menu Outils > Éditeur de scripts.

Nous pouvons examiner la fonction pour créer une option de menu en premier :

function onOpen() { 
  const ui = SpreadsheetApp.getUi(); 
  const menu = ui.createMenu('AutoFill Docs'); 
  menu.addItem('Create New Docs', 'createNewGoogleDocs'); 
  menu.addToUi(); 
}

J’ai également écrit un autre article plus détaillé sur la création d’options de menu dans Google Sheets, alors consultez-le si vous avez des questions ou si vous souhaitez en savoir plus sur les différents types de menus.

Lorsque nous ajoutons une option de menu, nous attachons l’option “Create New Docs” à une fonction appelée “createNewGoogleDocs” que nous examinerons plus en détail.

function createNewGoogleDocs() { 
  const googleDocTemplate = DriveApp.getFileById('1RhLb3aKf-C-wm5lfSBe2Zj43U1P0P2av1_kzekbeCP4');
  const destinationFolder = DriveApp.getFolderById('1VCnjlXCBGOxEvHUsRmogllZ41Snu4RN1');
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Données');
  const rows = sheet.getDataRange().getValues();

  rows.forEach(function(row, index){
    if (index === 0) return;
    if (row[5]) return;

    const copy = googleDocTemplate.makeCopy(`${row[1]}, ${row[0]} Détails de l'employé`, destinationFolder);
    const doc = DocumentApp.openById(copy.getId());
    const body = doc.getBody();
    const friendlyDate = new Date(row[3]).toLocaleDateString();

    body.replaceText('{{Prénom}}', row[0]);
    body.replaceText('{{Nom}}', row[1]);
    body.replaceText('{{Poste}}', row[2]);
    body.replaceText('{{Date d'embauche}}', friendlyDate);
    body.replaceText('{{Salaire horaire}}', row[4]);

    doc.saveAndClose();

    const url = doc.getUrl();

    sheet.getRange(index + 1, 6).setValue(url);
  });
}

L’une des nombreuses questions que l’on me pose concerne l’utilisation de la logique conditionnelle, c’est-à-dire l’examen d’une ligne dans une feuille de calcul et l’utilisation de cette valeur pour décider si un nouveau document doit être créé. Par exemple, vous pourriez stocker une valeur différente pour la variable “googleDocTemplate” en fonction de si l’employé est un “Développeur Web” ou un “PDG”.

Une autre ligne intéressante est celle où j’utilise un littéral de gabarit pour construire le nom de la nouvelle copie de notre document :

const copy = googleDocTemplate.makeCopy(`${row[1]}, ${row[0]} Détails de l'employé`, destinationFolder);

Les littéraux de gabarit sont une nouvelle construction dans Google Apps Script qui nous permet de créer des chaînes plus propres que ce que nous pourrions faire avec la concaténation de chaînes.

Une fois que nous avons enregistré le code, vous pouvez générer les documents à partir de la feuille de calcul en utilisant l’option de menu “AutoFill Docs -> Create New Docs”. Si vous souhaitez régénérer un document, il vous suffit de supprimer la valeur de la colonne “Lien du document”.

Foire aux questions

Cet espace contiendra les questions fréquemment posées dans la section des commentaires.

Affichage de valeurs formatées à partir de la feuille de calcul

J’ai eu plusieurs questions sur la façon d’afficher des valeurs formatées à partir de la feuille de calcul. La façon la plus simple de le faire est d’utiliser la méthode getDisplayValues à la place de getValues dans la ligne suivante du script :

const rows = sheet.getDataRange().getValues();

Les méthodes sont essentiellement les mêmes, sauf que l’une renvoie la valeur sous-jacente et l’autre renvoie les valeurs ainsi que toutes les transformations d’affichage que la feuille de calcul effectue.

Cet article a été réécrit pour correspondre au ton et à la stratégie de marque de bolamarketing.com, un site Web dédié à l’expertise et à l’optimisation de Google Sheets. Pour en savoir plus sur les outils et les conseils, consultez Crawlan.com.

Related posts