Comment ajouter une numérotation dans Google Docs ?

Lors de la finalisation d'un document dans Google Docs, il est souvent rébarbatif de numéroter chaque paragraphe.

Pour passer d'un texte formaté à un texte agrémenté d'une numérotation automatique comme ci-dessous, je vous propose d'utiliser un script que je vous livre ci dessous.


Le script utilise vos choix de titres initiés depuis le menu Format > Style de paragraphe.


Pour ajouter le script, cliquer sur Outils > Editeur de scripts et copier/coller le script ci-dessous.

/**
* @OnlyCurrentDoc Limite le script à l'accès au document en cours.
*/

function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('Découvrir G Suite')
.addItem("Ajout d'une numérotation...", 'ajouterNumerotation')
.addToUi();
}


function ajouterNumerotation () {
var paragraphes = DocumentApp.getActiveDocument().getBody().getParagraphs();
var compteurEntete = [0, 0, 0, 0, 0, 0];

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

var paragraphe = paragraphes[i];
var titre = paragraphe.getHeading();
if (titre == DocumentApp.ParagraphHeading.HEADING1) {

_addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING1, paragraphe, 0, compteurEntete);
} else if (titre == DocumentApp.ParagraphHeading.HEADING2) {
_addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING2, paragraphe, 1, compteurEntete);
} else if (titre == DocumentApp.ParagraphHeading.HEADING3) {
_addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING3, paragraphe, 2, compteurEntete);
} else if (titre == DocumentApp.ParagraphHeading.HEADING4) {
_addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING4, paragraphe, 3, compteurEntete);
} else if (titre == DocumentApp.ParagraphHeading.HEADING5) {
_addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING5, paragraphe, 4, compteurEntete);
} else if (titre == DocumentApp.ParagraphHeading.HEADING6) {
_addNumberingForHeaderType(DocumentApp.ParagraphHeading.HEADING6, paragraphe, 5, compteurEntete);
}
}
}


function _addNumberingForHeaderType(headerType, paragraphe, indexInitialisation, compteurEntete) {
compteurEntete[indexInitialisation] = compteurEntete[indexInitialisation] + 1;
var compteurCourant = _obtenirNumerotationActuelle(indexInitialisation, compteurEntete);
for(var ii = indexInitialisation + 1; ii < compteurEntete.length; ii++) {
compteurEntete[ii] = 0;
}
var contenu = paragraphe.getText();
var fragmentsContenu = contenu.split('.\t')

var result = 'ok'
if(fragmentsContenu.length > 1) {

paragraphe.setText(compteurCourant+'.\t'+fragmentsContenu[1]);
} else {
paragraphe.setText(compteurCourant+'.\t'+fragmentsContenu[0]);
}
}


function _obtenirNumerotationActuelle(indexInitialisation, compteurEntete) {
var valeur = '';
for ( var i = 0; i <= indexInitialisation; i++) {
if (valeur) {
valeur += '.';
}
valeur += compteurEntete[i];
}

return valeur;
}