Google Docs avec DocumentApp
Introduction
Dans ce chapitre, nous allons nous concentrer sur l’automatisation au sein de Google Docs. Docs est l’application de traitement de texte basée sur le cloud de Google. Comme Google Sheets, Slides et Forms, Docs peut être automatisé avec Apps Script.
Introduction à DocumentApp
DocumentApp est le service natif Apps Script pour manipuler des fichiers Google Docs côté serveur. Il expose un modèle d’objets hiérarchiques (Document > Body > Paragraph/Text, Table, ListItem, InlineImage…) et des méthodes simples pour écrire, insérer, mettre en forme et naviguer dans le contenu.
1. Présentation du service
Apps Script est accessible, comme d’habitude, depuis Extensions, puis Apps Script. Un fichier Google Docs peut être l’hôte d’un projet Apps Script.

Avant d’entrer dans les techniques d’automatisation, il est utile de préciser comment un document Google Docs est structuré. Dans un fichier Docs, on manipule un document dont le contenu principal se trouve dans la partie Body.
À l’intérieur de ce Body, le contenu est organisé sous forme d’éléments : paragraphes, titres, éléments de liste, tableaux, images en ligne, liens, notes de bas de page, signets, table des matières. Des sections d’en-tête et de pied de page peuvent également être présentes pour des éléments récurrents comme un logo, une mention légale ou une pagination.
On peut accéder à un document à partir des méthodes de DocumentApp :
-
getActiveDocument() : pour les projets liés à un Google Docs.
-
openById() : à partir de l’ID du fichier.
-
openByUrl() : à partir de l’URL du fichier.
On peut aussi créer un document grâce à la fonction create().
Toutes ces fonctions renvoient une instance de la classe Document, qui permet ensuite de manipuler le document.
function displayDocumentName() {
const document = DocumentApp.getActiveDocument();
Logger.log(document.getName());
}
Par exemple, dans un projet lié au document ci-dessous :


2. Méthodes essentielles
La plupart des opérations commencent par l’ouverture d’un document et la récupération de son corps....
Automatiser et personnaliser les documents
Dans la plupart des projets, les documents ne sont pas générés à partir d’une page blanche. La démarche la plus robuste consiste à conserver un modèle dans Drive, à en créer une copie, puis à remplacer des balises selon des règles définies.
Cette approche garantit une mise en page stable, facilite la maintenance éditoriale et permet un contrôle fin du rendu.
1. Remplacer des balises… avec style
Voici un modèle de facture avec des balises {{ClientName}}, {{InvoiceNumber}}, {{TotalPrice}}, {{Address}}. Nous allons nous servir de ce document pour illustrer la suite des notions de ce chapitre.

replaceText() cherche un texte et le remplace partout dans le document.
-
Le « motif » à chercher est une chaîne (par exemple, "{{ClientName}}") ou une petite regex écrite en chaîne (par exemple, "\\d{4}" - on double les antislashs).
-
Google utilise RE2 (une version limitée des regex) : cela couvre les cas courants (\d, {4}, etc.), mais pas tout.
-
La recherche se fait par petits blocs de texte (par exemple, un mot coupé par un style différent = 2 blocs). Si votre motif est coupé en deux styles, il ne sera pas trouvé.
function fillSimpleTags() {
const doc = DocumentApp.getActiveDocument();
const body = doc.getBody();
const data = {
"TotalPrice": "1000$",
"ClientName": "Lidia",
"InvoiceNumber": "I000-23",
"Address": "123 Paradise Street"
}
Object.entries(data).forEach(([tag, value]) => {
const safeTag = '{{' + tag + '}}';
body.replaceText(safeTag, String(value...Techniques avancées et intégrations
1. Créer un Docs par réponse à un formulaire
Un autre cas classique d’automatisation avec Docs consiste à générer un document lorsqu’un formulaire est soumis. Cela permet par exemple de générer une invitation avec QR code, ou d’initier un bon de commande.
Prenons le cas d’un certificat de complétion, avec les balises {{FullName}}, {{CourseName}}, {{Date}}, {{Organization}}.

Et considérons le formulaire avec les questions adéquates.

Nous allons ensuite créer un projet Apps Script à partir du formulaire, et y injecter une fonction déclenchée automatiquement grâce à un trigger onSubmit(e).
/**
* Trigger (installable) on the Google Form itself.
* Creates a Docs certificate from a template using e.response (no helpers).
*/
function onFormSubmit_CreateCertificate(e) {
const templateId = '1CRD3GZt0OiTY3qQzOGO4w4TIkbNQiWA3EHmIvoshOnc';
const outputFolderId = '1bE_sXFb3VRENnajPMwyuIQVzEnP_ectk';
// ---- Read answers by question title (Map<title, value>) ----
const answersByTitle = {};
const formResponse = e && e.response;
const itemResponses = formResponse ? formResponse.getItemResponses() : [];
itemResponses.forEach((itemResponse) => {
const title = itemResponse.getItem().getTitle();
answersByTitle[title]...