Lors de la finalisation d'un document dans Google Docs, il est souvent rébarbatif de numéroter chaque paragraphe.
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;
}