Cours Apps Script : les boîtes de dialogue

Les boîtes de dialogue permettent d'afficher une information, de demander une confirmation à l'utilisateur ou de lui demander d'entrer une information.


Alert

La méthode alert permet d'afficher une boîte de dialogue avec différents paramètres possibles.

Avec un seul argument, vous affichez simplement un message avec un bouton OK :

SpreadsheetApp.getUi().alert('Suppression confirmée');
google sheets apps script alert boites de dialogue

Si vous entrez un second argument, celui-ci définit quels sont les boutons à afficher.

Les choix possibles sont :

ConstanteBoutons
OKOK
OK_CANCELOK, Annuler
YES_NOOui, Non
YES_NO_CANCELOui, Non, Annuler

Par exemple :

const ui = SpreadsheetApp.getUi();
ui.alert('Confirmer la suppression ?', ui.ButtonSet.YES_NO);
google sheets apps script alert boutons oui non boites de dialogue

Si vous entrez trois arguments, le premier sera le titre, le second le texte et le troisième les boutons :

const ui = SpreadsheetApp.getUi();
ui.alert('Demande de confirmation', 'Confirmer la suppression ?', ui.ButtonSet.YES_NO_CANCEL);
google sheets apps script alert boutons oui non annuler boites de dialogue

Pour connaître le choix de l'utilisateur et effectuer ou non une action, il faut récupérer la valeur retournée par alert :

const ui = SpreadsheetApp.getUi();
const choix = ui.alert('Confirmer la suppression ?', ui.ButtonSet.YES_NO);

Puis comparer la valeur retournée :

ConstanteChoix de l'utilisateur
OKBouton OK
CANCELBouton Annuler
YESBouton Oui
NOBouton Non
CLOSEBouton de fermeture de la boîte de dialogue

Par exemple :

const ui = SpreadsheetApp.getUi();
const choix = ui.alert('Confirmer la suppression ?', ui.ButtonSet.YES_NO);

// Si l'utilisateur clique sur Oui
if (choix == ui.Button.YES) {

  // Affichage d'une autre boîte de dialogue
  ui.alert('Suppression confirmée !');
}

Ou :

const ui = SpreadsheetApp.getUi();

// Si l'utilisateur clique sur Oui
if (ui.alert('Confirmer la suppression ?', ui.ButtonSet.YES_NO) == ui.Button.YES) {

  // Affichage d'une autre boîte de dialogue
  ui.alert('Suppression confirmée !');
}

Toast

La méthode toast affiche une petite fenêtre en bas à droite de la feuille qui disparaît au bout de quelques secondes.

Elle peut être utilisée par exemple pour afficher une confirmation (qui ne nécessite aucune action de la part de l'utilisateur pour être fermée) :

SpreadsheetApp.getActive().toast('Suppression confirmée !');
google sheets apps script toast confirmation boites de dialogue

Il est possible d'ajouter un titre en second argument :

SpreadsheetApp.getActive().toast('Toutes les données ont bien été supprimées.', 'Suppression confirmée');
google sheets apps script toast titre boites de dialogue

Vous pouvez également préciser la durée (en secondes) en troisième argument :

SpreadsheetApp.getActive().toast('OK', null, 1.5);

Prompt

La méthode prompt permet d'afficher une boîte de dialogue où l'utilisateur est invité à entrer une information.

Tout comme la méthode alert vous pouvez entrer de 1 à 3 arguments.

Exemple avec un seul argument :

const reponse = SpreadsheetApp.getUi().prompt('Entrez votre nom :');
google sheets apps script prompt boites de dialogue

Un second argument permet de choisir les boutons (vous disposez des mêmes choix de boutons qu'avec alert) :

const ui = SpreadsheetApp.getUi();
const reponse = ui.prompt('Entrez votre nom et cliquez sur OK :', ui.ButtonSet.OK_CANCEL);
google sheets apps script prompt ok annuler boites de dialogue

Et pour terminer, un exemple avec 3 arguments (titre, texte, boutons) :

const ui = SpreadsheetApp.getUi();
const reponse = ui.prompt('Inscription', 'Entrez votre nom et cliquez sur OK :', ui.ButtonSet.OK_CANCEL);
google sheets apps script prompt inscription boites de dialogue

A partir de la valeur retournée par prompt, vous pouvez récupérer à la fois la valeur entrée et le bouton cliqué :

const ui = SpreadsheetApp.getUi();
const reponse = ui.prompt('Inscription', 'Entrez votre nom et cliquez sur OK :', ui.ButtonSet.OK_CANCEL);

if (reponse.getSelectedButton() == ui.Button.OK) {
  ui.alert('Merci ' + reponse.getResponseText());
}