Ressources Google Apps Script
Tuto 3 : créer un menu supplémentaire
Ajouter un menu avec nos fonctions personnalisées
Précédemment nous avons vu comment lancer des fonctions à l’ouverture d’un document
Selon le contexte on peut vouloir executer des fonctions dans certaines conditions. Dans ce but nous allons ajouter un menu à la barre de menu afin d’ajouter des lanceurs liés à nos fonctions.
Pour les besoins de ce tutoriel nous créerons des fonctions qui insérerons du texte générique souvent utilisé dans une correspondance administrative.
Ajouter un menu
La classe DocumentApp nous donne accès à la méthode createMenu() qui permet de construire un objet menu.Elle nous donne la possibilité de créer des entrées liées à une fonction mais aussi de créer des sous menus et des séparateurs. Nous mettrons des commentaires dans la fonction afin de couvrir ces aspects.
Pour que notre menu soit disponible dès l’ouverture du document c'est de nouveau la fonction onOpen() qui va nous rendre service. Appelons la fonction de construction du menu ajouterMenu().
onOpen(){
//Actualiser la date
actualiserDate();
//Insérer l’email
insererEmail();
}
//Ajouter un menu
ajouterMenu();
Pour ne pas multiplier de code similaire, nous allons créer en parallèle une fonction pour insérer les textes génériques qui prendra un paramètres en argument pour rendre tout cela plus dynamique et factorisé.Avec Google Apps Script nous devons faire face à quelques limitations. Notamment ici pour la construction du menu les méthodes addItem permettent d’appler une fonction mais n’autorisent pas le passage de paramètres à ces dernières. Pour développer avec cette contraine nous allons créer une fonction par élément du menu qui lancera une fonction générique afin de ne pas dupliquer du code.Voyons maintenant le cœeur de la fonction ajouterMenu() :
function ajouterMenu(){
DocumentApp.getUi()
.createMenu('Utiles')
.addSubMenu(
DocumentApp.getUi()
.createMenu('Demande')
.addItem('CR conseil municipal', 'menuCRConseil')
.addItem('Subvention', 'menuSubvention')
.addItem('Location salle polyvalente', 'menuLocationSalle)'),
)
.addSeparator()
.addItem('Horaires mairie', 'menuHoraires')
.addToUi();
}
function menuCRConseil() {
insererTexteGenerique('CR_conseil');
}
function menuSubvention() {
insererTexteGenerique('subvention');
}
function menuLocationSalle() {
insererTexteGenerique('location_salle');
}
function menuHoraires() {
insererTexteGenerique('horaires');
}
function insererTexteGenerique(type){
const cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor) {
// Vérification si le curseur est sur un élement acceptant du texte
let text = "";
switch (type) {
case "CR_conseil":
text = "Vous pouvez retrouver l’ensemble des comptes rendus de conseil municipals à l’adresse suivante : [...]";
break;
case "subvention":
text = "Vous pouvez retrouver la procédure de demande de subvention et conditions d’attribution à l’adresse suivante : [...]";
case "location_salle":
text = "Afin de réserver la salle polyvalente merci de formuler une demande à l’adresse suivante : [...]";
break;
case "horaires":
text = "La mairie est ouverte au public du lundi au vendredi de 14h à 15h les jours impairs et de 8h à 9h les jours pairs.";
break;
}
const element = cursor.insertText(text);
}
}
Cliquer la disquette pour enregistrer au besoin puis retourner à l'onglet du document contenant le texte et actualisez la page. Vous aurez accès au nouveau menu et aux raccourcis vers nos fonctions.