Google Docs : numérotez les titres de façon hiérarchisée et reportez les numérotations dans le sommaire

1

Google Docs est un formidable éditeur de texte collaboratif. Pour autant nous pouvons encore regretter des lacunes de fonctionnalités qui semblent pourtant essentielles dans un outil sensé gérer des textes. Par exemple, il n’est pas possible actuellement de numéroter les titres hiérarchiquement de façon pérenne et de faire apparaitre cette numérotation dans le sommaire…

Certes les listes numérotées répondent à ce besoin, mais cela demande pas mal de manipulations, parfois il faut redémarrer la numérotation, et celle-ci n’est pas intégrée dans le style du titre… et surtout, le numéro n’apparaît pas dans le sommaire automatique ! Heureusement, les scripts nous permettent de palier ces difficultés en attendant que le géant américain intègre ces optimisations dans son logiciel. Voici un script dont le but est d’ajouter des numéros de titres aux Titre 1, Titre 2 et Titre 3, sous le format 1., 1.1 et 1.1.a. de sorte que les numérotations s’intègrent dans le sommaire.

Remarque : le module complémentaire « table of Contents » remplit la mission, mais ce script décortique le processus et vous permet de l’adapter à vos besoins.


Le document

Créez un document, hiérarchisez-le en utilisant les styles de titres. Insérez la table de matière en début de document. ajoutez le script ci-dessous.

Vous pouvez aussi ouvrir le document ci-dessous.

Le script complet

/*
NUMÉROTER LES TITRES
script soumis aux droits d'auteur - utilisation possible dans un cadre non rémunéré.
Crédit : Antoine Martin / ThierrryVanoffe.com / 2020
*/

// variables placées en constante pour resservir dans plusieurs fonctions.
const ui = DocumentApp.getUi(); 
const thisDoc = DocumentApp.getActiveDocument();  
const body =  thisDoc.getBody() ;
const paragraphs = body.getParagraphs(); 

// Expression régulière pour repérer les numérotations déjà créées 
const pattern = "([0-9]{1,3}\.|[0-9]{1,3}\.[0-9]{1,3}\.|[0-9]{1,3}\.[0-9]{1,3}\.[a-z]{1}\.)[ ]{1}";

function onOpen()
{
  let ui = DocumentApp.getUi(); 
  ui.createMenu("+ OUTILS")
  .addSubMenu(ui.createMenu("Numéroter les titres")
              .addItem("Numéroter titre 1 à 3", "numeroterTitre")
              .addItem("Supprimer la numérotation des titres","supprimerNumTitre")
             )
  .addToUi();
}

function numeroterTitre() { 
  //Supprimer tous les numéros d'une numérotation précédente
  supprimerNumTitre();
  // Définir les variable Numero de ligne à 0 
  let nh1 = 0 ;
  let nh2 = 0;
  let nh3 = 0 ;  
  let lettres = ["","a","b","c","d","e","f","g","h","i","j"] ;
  
  // Boucle sur les paragraphes du texte
  for (let i=0 ; i< paragraphs.length ; i++)
  {
    let thisParagraph = paragraphs[i]; 
    let heading = thisParagraph.getHeading(); 
    if (heading === DocumentApp.ParagraphHeading.HEADING1)
    {
      // si le paragraphe est un Titre 1 : 
      // incrémenter le numero de Titre 1
      nh1++;
      // réinitialiser le numéro de Titre 2 et Titre 3 à 0
      nh2 = 0;
      nh3 = 0 ;
      // Insérer devant le texte le numéro en cours, un "." et un espace
      thisParagraph.editAsText().insertText(0 , nh1+". ");
    }      
    if (heading === DocumentApp.ParagraphHeading.HEADING2)
    {
      nh2++;
      nh3 = 0 ;
      thisParagraph.editAsText().insertText(0 , nh1+"."+nh2+". ");
    }   
    if (heading === DocumentApp.ParagraphHeading.HEADING3)
    {
      nh3++;
      thisParagraph.editAsText().insertText(0 , nh1+"."+nh2+"."+lettres[nh3]+". ");
    }   
  }
}

function supprimerNumTitre() {
  body.replaceText(pattern, ""); 
}

Lancez le script

Le script crée un nouveau bouton « + OUTILS », cliquez sur « Numéroter les titres > Numéroter titres 1 à 3 »

Comment lancer la numérotation

Les titres sont numérotés de façon hiérarchique.

Actualisez le sommaire pour y afficher les numéros.

Relancez la numérotation si vous avez changé le plan de votre document. Il n’est pas possible de créer un déclencheur automatique que Google Docs… 🙁

Je vous laisse découvrir à quoi sert le bouton « Supprimer la numérotation des Titres ». Le suspens est insoutenable ! 🙂


Merci pour vos commentaires si ce script répond à votre besoin. N’hésitez pas aussi à soumettre vos suggestions d’amélioration !


Vous avez un projet autour de G Suite
et vous souhaitez nous solliciter :

formation | développement | paramétrage G Suite | interventions | …


Si vous avez trouvé une faute d’orthographe, veuillez nous en informer en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée .

1 COMMENTAIRE

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.