Travail en cours...

Traitement...
×

Régénérer ce module

Le contenu actuel sera remplacé. Si le Quiz est absent, il sera recréé. Cochez les options :

Retour

Maîtriser Google Apps Script : Automatisation et Interfaces Web

Module 1 : Introduction à Google Apps Script
1/93

Module 1 : Introduction à Google Apps Script

Bienvenue dans ce module dédié à Google Apps Script. Préparez-vous à découvrir un outil puissant pour automatiser vos tâches et étendre les fonctionnalités de vos applications Google préférées. Ensemble, explorons comment transformer vos flux de travail quotidiens.

Module 1 : Introduction à Google Apps Script
2/93

Qu'est-ce que Google Apps Script ?

Google Apps Script est une plateforme de script basée sur JavaScript. Elle vous permet de : Automatiser des tâches répétitives. Créer des fonctionnalités personnalisées pour Google Workspace (Docs, Sheets, Forms, Gmail, etc.). Connecter différentes applications Google entre elles. Développer des applications web simples.

C'est votre passerelle vers une efficacité accrue.

Module 1 : Introduction à Google Apps Script
3/93

Pourquoi utiliser Google Apps Script ?

L'automatisation libère votre temps pour des tâches à plus forte valeur ajoutée. Google Apps Script offre : Accessibilité : Basé sur JavaScript, un langage largement utilisé. Intégration : Connectivité native avec l'écosystème Google. Simplicité : Pas d'installation complexe, tout est en ligne. Flexibilité : Des petites automatisations aux applications plus complexes.

Module 1 : Introduction à Google Apps Script
4/93

Les Fondamentaux de JavaScript pour Apps Script

Apps Script s'appuie sur JavaScript. Voici quelques concepts clés à maîtriser : Variables : Pour stocker des informations (`let`, `const`). Fonctions : Blocs de code réutilisables. Objets : Collections de données. Boucles et Conditions : Pour le contrôle du flux d'exécution.

Comprendre ces bases vous permettra de créer des scripts plus sophistiqués.

Module 1 : Introduction à Google Apps Script
5/93

Votre Premier Script : "Hello World"

Pour débuter, ouvrons Google Sheets. Allez dans "Extensions" > "Apps Script". Un éditeur s'ouvre. Tapez ce code :

javascript
function maPremiereFonction() {
  Logger.log('Bonjour le monde !');
}

Enregistrez le script, puis exécutez la fonction `maPremiereFonction` (choisissez-la dans le menu déroulant à côté de l'icône "Exécuter"). Vérifiez le résultat dans "Affichage" > "Journaux".

Module 1 : Introduction à Google Apps Script
6/93

L'Éditeur d'Apps Script

L'éditeur est votre espace de travail. Il comprend : Le panneau des fichiers : Pour organiser vos scripts. La zone de code : Où vous écrivez vos scripts. La barre d'outils : Fonctions d'exécution, de débogage, de sauvegarde. La console : Pour afficher les journaux (`Logger.log`).

Familiarisez-vous avec cet environnement pour une utilisation fluide.

Module 1 : Introduction à Google Apps Script
7/93

Interagir avec Google Sheets

Apps Script peut lire et écrire dans vos feuilles de calcul. Voici un exemple pour lire une valeur :

javascript
function lireValeur() {
  const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const valeur = feuille.getRange('A1').getValue();
  Logger.log('La valeur en A1 est : ' + valeur);
}

Ce script récupère le contenu de la cellule A1 et l'affiche dans les journaux.

Module 1 : Introduction à Google Apps Script
8/93

Automatiser des Tâches avec Apps Script

Imaginez recevoir un email avec une pièce jointe et vouloir la sauvegarder automatiquement dans Google Drive. Apps Script peut le faire. Il permet de créer des déclencheurs (triggers) qui exécutent des scripts à des moments précis ou suite à des événements (ex: ouverture d'un formulaire).

Module 1 : Introduction à Google Apps Script
9/93

Création d'une Interface Web Simple

Apps Script peut créer des interfaces utilisateur web pour vos scripts. C'est le domaine des "Web Apps". Ces applications peuvent être appelées via une URL et permettent une interaction plus riche avec vos données ou vos processus automatisés. Nous explorerons cela en détail.

Module 1 : Introduction à Google Apps Script
10/93

Prochaines Étapes

Dans les modules suivants, nous approfondirons : La manipulation avancée de Google Sheets. L'automatisation de Gmail et de Google Drive. La création d'interfaces utilisateur avec HTML Service. La mise en place de déclencheurs (triggers).

Votre voyage vers une meilleure maîtrise de Google Apps Script ne fait que commencer !

Module 1 : Introduction à Google Apps Script
11/93

QUIZ DE VALIDATION

1. Quelle est la technologie principale sur laquelle repose Google Apps Script ?

Python
JavaScript
Java
C++

2. Quel est l'objectif principal de Google Apps Script ?

Créer des jeux vidéo
Concevoir des applications mobiles natives
Automatiser des tâches et étendre les applications Google
Gérer des bases de données relationnelles complexes

3. Le script "Hello World" dans Apps Script utilise principalement :

`console.log()`
`Logger.log()`
`print()`
`echo()`

4. Pour interagir avec Google Sheets, quelle librairie Apps Script est généralement utilisée ?

`DriveApp`
`GmailApp`
`SpreadsheetApp`
`FormsApp`

5. Quel élément de l'éditeur Apps Script est utilisé pour afficher les messages de débogage ?

La zone de code
Le panneau des fichiers
La console (Journaux)
La barre d'outils

6. Un "trigger" en Apps Script permet de :

Stocker des informations de manière permanente
Exécuter un script automatiquement en réponse à un événement ou à un horaire
Créer des interfaces graphiques complexes
Déclarer des variables globales

7. Quel type d'application peut être créé avec Apps Script pour offrir une interface utilisateur personnalisée accessible via une URL ?

Desktop Application
Web App
Mobile App
API Endpoint

8. Dans l'exemple de lecture de valeur dans Google Sheets, `getActiveSheet()` renvoie :

Le classeur entier
La première feuille du classeur
La feuille actuellement active
Un objet représentant la cellule A1

9. `let` et `const` sont des mots-clés utilisés en JavaScript pour :

Définir des fonctions
Importer des librairies
Déclarer des variables
Créer des boucles

10. Quel est le principal avantage de l'intégration native de Apps Script avec l'écosystème Google ?

Permet de créer des applications indépendantes des services Google.
Offre une compatibilité totale avec tous les langages de programmation.
Facilite l'automatisation et la connexion entre les applications Google.
Réduit considérablement la nécessité de connaître JavaScript.
Module 2 : Manipulation des Services Google
12/93

Module 2 : Manipulation des Services Google

Bienvenue dans ce module consacré à la manipulation des services Google avec Apps Script. Après avoir exploré les bases du langage, nous allons maintenant plonger dans la manière dont Apps Script peut interagir avec les outils que vous utilisez quotidiennement.

Apps Script agit comme un pont, vous permettant d'automatiser des tâches répétitives et de connecter différents services Google pour créer des solutions personnalisées. Pensez à l'efficacité accrue et aux nouvelles possibilités qui s'offrent à vous.

Module 2 : Manipulation des Services Google
13/93

Accès aux Services Google

Pour manipuler les services Google, Apps Script utilise des objets prédéfinis. Ces objets sont accessibles via le namespace `GoogleAppsScript`. Par exemple, pour interagir avec Google Sheets, vous utiliserez l'objet `SpreadsheetApp`.

Chaque service majeur dispose de son propre objet représentant son API. L'Explorateur d'API Apps Script est votre meilleur allié pour découvrir et comprendre ces services.

Module 2 : Manipulation des Services Google
14/93

Manipulation de Google Sheets

Google Sheets est l'un des services les plus couramment automatisés. Vous pouvez lire, écrire et modifier des données dans vos feuilles de calcul directement depuis Apps Script.

L'objet `SpreadsheetApp` vous donne accès à tous les classeurs ouverts, permet de créer de nouvelles feuilles, de sélectionner des cellules spécifiques et d'y insérer des valeurs.

javascript
function modifierCellule() {
  var feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  feuille.getRange("A1").setValue("Bonjour du Script !");
}
Module 2 : Manipulation des Services Google
15/93

Manipulation de Google Docs

De manière similaire, vous pouvez automatiser la création et la modification de documents Google Docs. L'objet `DocumentApp` vous permet d'accéder au corps d'un document, d'insérer du texte, de modifier la mise en forme, etc.

C'est idéal pour générer des rapports, des lettres personnalisées ou pour remplir des modèles.

javascript
function creerDocumentSimple() {
  var doc = DocumentApp.create("Mon Nouveau Document");
  var corps = doc.getBody();
  corps.appendParagraph("Ceci est mon premier paragraphe.");
  corps.appendParagraph("Un autre paragraphe pour montrer la puissance du script.");
  Logger.log("Document créé : " + doc.getUrl());
}
Module 2 : Manipulation des Services Google
16/93

Manipulation de Google Drive

Apps Script peut également interagir avec Google Drive pour gérer vos fichiers et dossiers. L'objet `DriveApp` permet de créer des dossiers, de copier, déplacer, supprimer des fichiers, et de gérer leurs permissions.

Cela ouvre la voie à des systèmes de gestion documentaire automatisés ou à des transferts de fichiers intelligents.

javascript
function creerDossier() {
  var nomDossier = "Mes Rapports Automatisés";
  var dossierParent = DriveApp.getRootFolder();
  var nouveauDossier = dossierParent.createFolder(nomDossier);
  Logger.log("Dossier créé : " + nouveauDossier.getUrl());
}
Module 2 : Manipulation des Services Google
17/93

Utilisation de Google Forms

Automatisez la création de formulaires avec `FormApp` ou traitez les réponses automatiquement. Vous pouvez créer des formulaires, ajouter des questions, et même récupérer les réponses collectées.

C'est un outil puissant pour la collecte de données et les enquêtes.

javascript
function creerFormulaireSimple() {
  var form = FormApp.create("Mon Formulaire de Feedback");
  form.addTextItem()
      .setTitle("Votre nom")
      .setRequired(true);
  form.addParagraphItem()
      .setTitle("Vos commentaires");
  Logger.log("Formulaire créé : " + form.getPublishedUrl());
}
Module 2 : Manipulation des Services Google
18/93

Gmail et la Communication

Apps Script peut envoyer des e-mails via l'objet `GmailApp`. Vous pouvez rédiger des messages, spécifier des destinataires, des sujets et des corps de message.

C'est parfait pour les notifications automatiques, les confirmations ou les rapports par e-mail.

javascript
function envoyerEmailSimple() {
  GmailApp.sendEmail("destinataire@example.com", "Sujet de l'email", "Contenu du message.");
  Logger.log("Email envoyé.");
}
Module 2 : Manipulation des Services Google
19/93

Conclusion du Module

Vous avez maintenant découvert comment Apps Script peut se connecter et interagir avec une variété de services Google. Chaque service offre des possibilités uniques pour automatiser et optimiser vos flux de travail.

Expérimentez avec ces objets et explorez leur documentation pour repousser les limites de ce que vous pouvez accomplir.

Module 2 : Manipulation des Services Google
20/93

QUIZ DE VALIDATION

1. Quel objet Apps Script utilisez-vous pour interagir avec Google Sheets ?

`DocumentApp`
`SpreadsheetApp`
`DriveApp`
`FormApp`

2. Comment accéder au corps d'un document Google Doc en Apps Script ?

Via `DocumentApp.getActiveDocument().getBody()` ou `DocumentApp.create("nom").getBody()`
Via `SpreadsheetApp.getActiveSpreadsheet().getBody()`
Via `DriveApp.getFileById().getBody()`
Cette fonctionnalité n'est pas disponible.

3. Quel objet est utilisé pour créer un nouveau dossier dans Google Drive avec Apps Script ?

`FileApp`
`FolderCreator`
`DriveApp`
`GoogleDriveService`

4. Pour envoyer un e-mail avec Apps Script, quel objet devez-vous utiliser ?

`EmailService`
`MailApp`
`GmailApp`
`SenderApp`

5. Quelle méthode de `SpreadsheetApp` permet de sélectionner une cellule spécifique ?

`getCell()`
`selectRange()`
`getRange()`
`activateCell()`

6. L'objet `FormApp` est principalement utilisé pour :

Gérer les réponses des formulaires uniquement.
Créer des formulaires et interagir avec leurs réponses.
Envoyer des e-mails de confirmation.
Stocker des données dans des feuilles de calcul.

7. Pour obtenir l'URL d'un nouveau document créé, quelle méthode est couramment utilisée ?

`getUrl()` sur l'objet `DocumentApp` lui-même.
`getLink()` sur l'objet `Body`.
`getUrl()` sur l'objet `Document` retourné par `DocumentApp.create()`.
`getPublishedUrl()` sur l'objet `DocumentApp`.

8. Dans le contexte de `DriveApp`, où se trouve le dossier racine de l'utilisateur ?

Il n'y a pas de dossier racine défini.
Accessible via `DriveApp.getRootFolder()`.
Accessible via `DriveApp.getMyDrive()`.
Accessible via `DriveApp.getHomeFolder()`.

9. Quel est l'avantage principal d'utiliser Apps Script pour interagir avec les services Google ?

Réduire la nécessité d'une connexion Internet.
Automatiser des tâches répétitives et créer des flux de travail personnalisés.
Augmenter la taille des fichiers stockés sur Google Drive.
Remplacer complètement l'interface utilisateur des services Google.

10. Quel est le rôle d'un "namespace" comme `GoogleAppsScript` dans Apps Script ?

Il définit le style visuel de l'application.
Il gère la base de données des utilisateurs.
Il regroupe et organise les différents objets et fonctions d'API disponibles.
Il sert uniquement à la gestion des erreurs.
Module 3 : Bases de JavaScript pour Apps Script
21/93

Introduction à JavaScript pour Apps Script

Bienvenue dans ce module dédié aux fondamentaux de JavaScript, essentiels pour maîtriser Apps Script. JavaScript est le langage de programmation qui rend possibles les interactions dynamiques et la création d'applications personnalisées dans Google Workspace. En comprenant ses bases, vous débloquerez le plein potentiel d'Apps Script.

Préparez-vous à explorer les concepts clés qui vous permettront de construire des solutions puissantes et efficaces. Votre voyage vers l'automatisation commence ici.

Module 3 : Bases de JavaScript pour Apps Script
22/93

Variables et Types de Données

Une variable est un conteneur nommé pour stocker des données. En JavaScript, nous utilisons principalement `let` et `const`. `let` permet de réassigner une valeur, tandis que `const` est réservée aux valeurs qui ne changeront pas.

Les types de données courants incluent :

  • String : Texte (ex: "Bonjour")
  • Number : Nombres entiers ou décimaux (ex: 42, 3.14)
  • Boolean : Vrai ou faux (ex: `true`, `false`)
  • Array : Liste ordonnée d'éléments (ex: `[1, 2, 3]`)
  • Object : Collection de paires clé-valeur (ex: `{ nom: "Alice", âge: 30 }`)

javascript
let message = "Bienvenue dans le monde d'Apps Script !";
const annee = 2023;
let estActif = true;
Module 3 : Bases de JavaScript pour Apps Script
23/93

Opérateurs

Les opérateurs permettent d'effectuer des opérations sur les variables et les valeurs.

  • Arithmétiques : `+`, `-`, `*`, `/`, `%` (modulo)
  • Comparaison : `==` (égal), `===` (strictement égal), `!=`, `!==`, `>`, `=`, `<=`
  • Logiques : `&&` (ET), `||` (OU), `!` (NON)
  • Affectation : `=`, `+=`, `-=`
javascript
let x = 10;
let y = 5;
let somme = x + y; // somme = 15
let estPlusGrand = x > y; // estPlusGrand = true
let condition = (x > 5 && y < 10); // condition = true
Module 3 : Bases de JavaScript pour Apps Script
24/93

Structures de Contrôle : Conditions

Les conditions vous permettent d'exécuter du code uniquement si certains critères sont remplis.

  • `if` : Exécute un bloc de code si la condition est vraie.
  • `else if` : Exécute un bloc de code si la condition `if` est fausse, et une autre condition est vraie.
  • `else` : Exécute un bloc de code si toutes les conditions précédentes sont fausses.
javascript
let score = 85;

if (score >= 90) {
  console.log("Excellent !");
} else if (score >= 70) {
  console.log("Bien joué !");
} else {
  console.log("Continuez vos efforts.");
}
Module 3 : Bases de JavaScript pour Apps Script
25/93

Structures de Contrôle : Boucles

Les boucles permettent de répéter un bloc de code plusieurs fois.

  • `for` : Idéale lorsque vous connaissez le nombre d'itérations.
  • `while` : Répète tant qu'une condition est vraie.
  • `forEach` : Parcourt chaque élément d'un tableau.
javascript
// Boucle for
for (let i = 0; i < 5; i++) {
  console.log("Itération numéro : " + i);
}

// Boucle while
let compteur = 0;
while (compteur < 3) {
  console.log("Compteur : " + compteur);
  compteur++;
}

// Boucle forEach
const fruits = ["Pomme", "Banane", "Orange"];
fruits.forEach(function(fruit) {
  console.log("J'aime la " + fruit);
});
Module 3 : Bases de JavaScript pour Apps Script
26/93

Fonctions

Les fonctions sont des blocs de code réutilisables qui effectuent une tâche spécifique. Elles vous aident à organiser votre code et à éviter les répétitions.

  • Elles peuvent prendre des paramètres (entrées).
  • Elles peuvent retourner une valeur (sortie).
javascript
// Déclaration d'une fonction
function saluer(nom) {
  return "Bonjour, " + nom + " !";
}

// Appel de la fonction
let messageSalutation = saluer("Utilisateur");
console.log(messageSalutation); // Affiche "Bonjour, Utilisateur !"
Module 3 : Bases de JavaScript pour Apps Script
27/93

Objets et Tableaux en Détail

Les objets et tableaux sont fondamentaux pour structurer vos données en Apps Script.

Objets : Stockent des données sous forme de paires clé-valeur. Utiles pour représenter des entités avec des propriétés.
javascript
let utilisateur = {
  prenom: "Léa",
  nom: "Dubois",
  age: 28,
  estEtudiant: false
};
console.log(utilisateur.prenom); // Affiche "Léa"
Tableaux : Stockent des listes ordonnées d'éléments.
javascript
let notes = [18, 15, 19, 12];
console.log(notes[0]); // Affiche 18 (premier élément)
console.log(notes.length); // Affiche 4 (nombre d'éléments)
Module 3 : Bases de JavaScript pour Apps Script
28/93

Méthodes de Tableaux Courantes

Les tableaux disposent de nombreuses méthodes intégrées pour manipuler leurs données facilement.

  • `push()` : Ajoute un élément à la fin.
  • `pop()` : Retire le dernier élément.
  • `shift()` : Retire le premier élément.
  • `unshift()` : Ajoute un élément au début.
  • `slice()` : Crée une copie d'une partie du tableau.
  • `splice()` : Modifie le tableau en ajoutant/supprimant des éléments.
  • `map()` : Crée un nouveau tableau en appliquant une fonction à chaque élément.
javascript
let nombres = [1, 2, 3];
nombres.push(4); // nombres est maintenant [1, 2, 3, 4]
let doubleNombres = nombres.map(function(n) { return n * 2; }); // [2, 4, 6, 8]
Module 3 : Bases de JavaScript pour Apps Script
29/93

Méthodes d'Objets Courantes

Les objets ont aussi des méthodes utiles pour accéder à leurs propriétés.

  • `Object.keys(objet)` : Retourne un tableau des clés de l'objet.
  • `Object.values(objet)` : Retourne un tableau des valeurs de l'objet.
  • `Object.entries(objet)` : Retourne un tableau de paires `[clé, valeur]`.
javascript
let configuration = {
  theme: "sombre",
  langue: "fr",
  notifications: true
};

console.log(Object.keys(configuration)); // ["theme", "langue", "notifications"]
console.log(Object.values(configuration)); // ["sombre", "fr", true]
Module 3 : Bases de JavaScript pour Apps Script
30/93

Introduction aux Objets Spécifiques d'Apps Script

Apps Script expose des objets intégrés pour interagir avec les services Google (Sheets, Docs, Gmail, etc.). Par exemple, `SpreadsheetApp` pour interagir avec Google Sheets.

Comprendre la structure des objets JavaScript est la clé pour utiliser ces services. Ces objets ont des propriétés et des méthodes que vous appellerez pour effectuer des actions.

javascript
// Exemple: Obtenir le classeur actif en Google Sheets
let classeurActif = SpreadsheetApp.getActiveSpreadsheet();
let nomClasseur = classeurActif.getName();
console.log("Classeur actif : " + nomClasseur);
Module 3 : Bases de JavaScript pour Apps Script
31/93

QUIZ DE VALIDATION

1. Quelle est la différence principale entre `let` et `const` ?

`let` permet de déclarer une constante, `const` une variable.
`let` permet de réassigner une valeur, `const` non.
Il n'y a aucune différence.

2. Quel opérateur vérifie à la fois la valeur ET le type ?

`==`
`===`
`!=`

3. Dans une structure `if-else if-else`, quelle condition est exécutée si toutes les conditions précédentes sont fausses ?

`if`
`else if`
`else`

4. Quelle boucle est la plus appropriée lorsque l'on sait exactement combien de fois il faut répéter une action ?

`for`
`while`
`forEach`

5. Comment appelle-t-on un bloc de code réutilisable qui prend des entrées et peut retourner une sortie ?

Une variable
Une fonction
Un objet

6. Si `monTableau = [10, 20, 30]`, quelle méthode ajouterait `40` à la fin ?

`unshift(40)`
`pop()`
`push(40)`

7. Quel objet JavaScript est utilisé pour représenter une collection de données associées par des clés ?

Array
Object
String

8. Si `monObjet = { nom: "Alex", age: 25 }`, comment accéder à la valeur "Alex" ?

`monObjet.get("nom")`
`monObjet.nom`
`monObjet[nom]`

9. Quelle méthode de tableau crée un nouveau tableau en appliquant une fonction à chaque élément du tableau d'origine ?

`filter()`
`map()`
`reduce()`

10. Quel objet Apps Script est généralement utilisé pour interagir avec Google Sheets ?

`MailApp`
`DocumentApp`
`SpreadsheetApp`
Module 4 : Fonctions avancées et gestion d'erreurs
32/93

Module 4 : Fonctions avancées et gestion d'erreurs

Bienvenue dans ce module dédié aux fonctions avancées et à la gestion des erreurs en Apps Script. Après avoir maîtrisé les bases, il est temps d'explorer des techniques pour rendre vos scripts plus robustes, efficaces et faciles à maintenir.

Ce module vous guidera à travers la structuration de votre code, l'optimisation des performances et la mise en place de mécanismes de gestion des erreurs. Préparez-vous à élever votre maîtrise de l'Apps Script à un niveau supérieur.

Module 4 : Fonctions avancées et gestion d'erreurs
33/93

Fonctions Avancées : La Puissance de la Modularité

Une fonction bien conçue est réutilisable et améliore la lisibilité de votre code. Nous allons explorer comment organiser vos scripts en fonctions modulaires.

Objectifs : Comprendre l'importance des fonctions. Définir et appeler des fonctions personnalisées. Utiliser des paramètres pour la flexibilité. Retourner des valeurs pour l'exploitation des résultats.

Module 4 : Fonctions avancées et gestion d'erreurs
34/93

Paramètres et Valeurs de Retour

Les paramètres permettent à vos fonctions d'accepter des données externes, tandis que les valeurs de retour leur permettent de communiquer des résultats à d'autres parties de votre script.

javascript
function saluerUtilisateur(nom) {
  Logger.log("Bonjour, " + nom + " !");
}

function calculerSomme(nombre1, nombre2) {
  let resultat = nombre1 + nombre2;
  return resultat; // Retourne la valeur calculée
}

// Appel des fonctions
saluerUtilisateur("Alice");
let maSomme = calculerSomme(5, 10);
Logger.log("La somme est : " + maSomme);
Module 4 : Fonctions avancées et gestion d'erreurs
35/93

Portée des Variables (Scope)

Comprendre la portée des variables est crucial pour éviter les conflits et assurer que vos données sont accessibles là où elles sont nécessaires.

Variables locales : Déclarées à l'intérieur d'une fonction, elles n'existent que pendant l'exécution de celle-ci. Variables globales : Déclarées en dehors de toute fonction, elles sont accessibles partout dans le script. À utiliser avec parcimonie.

javascript
let variableGlobale = "Je suis visible partout";

function maFonction() {
  let variableLocale = "Je ne suis visible qu'ici";
  Logger.log(variableGlobale); // Accès à la variable globale
  Logger.log(variableLocale);
}

maFonction();
// Logger.log(variableLocale); // Ceci générerait une erreur
Module 4 : Fonctions avancées et gestion d'erreurs
36/93

Gestion des Erreurs : La Clé de la Robustesse

Les erreurs sont inévitables. Savoir comment les anticiper, les détecter et y réagir est fondamental pour créer des scripts fiables.

Concepts clés : Erreurs courantes : Incompatibilité de types, accès à des données inexistantes, permissions insuffisantes. L'importance de `try...catch` : Un bloc de code pour intercepter et gérer les erreurs.

Module 4 : Fonctions avancées et gestion d'erreurs
37/93

Le Bloc `try...catch`

Le bloc `try...catch` permet de "capturer" les erreurs qui surviennent lors de l'exécution du code dans le bloc `try`.

javascript
try {
  // Code potentiellement sujet à une erreur
  let resultat = 10 / 0; // Division par zéro
  Logger.log("Ce message ne sera pas affiché.");
} catch (erreur) {
  // Code exécuté si une erreur survient dans le bloc try
  Logger.log("Une erreur s'est produite : " + erreur.message);
} finally {
  // Code exécuté quoi qu'il arrive (avec ou sans erreur)
  Logger.log("Bloc finally exécuté.");
}
Module 4 : Fonctions avancées et gestion d'erreurs
38/93

Le Bloc `finally`

Le bloc `finally` est optionnel et s'exécute toujours après les blocs `try` et `catch`, qu'une erreur se soit produite ou non. Il est utile pour le nettoyage, comme la fermeture de fichiers ou la libération de ressources.

javascript
try {
  // Opération avec un fichier
  Logger.log("Tentative d'ouverture du fichier...");
} catch (e) {
  Logger.log("Erreur lors de l'ouverture du fichier : " + e);
} finally {
  Logger.log("Opération de fermeture des ressources effectuée.");
}
Module 4 : Fonctions avancées et gestion d'erreurs
39/93

Techniques de Debugging Avancé

Pour diagnostiquer et résoudre les problèmes, utilisez les outils à votre disposition.

`Logger.log()` : Indispensable pour tracer l'exécution et examiner les valeurs des variables. Débogueur Apps Script : Permet de mettre des points d'arrêt et d'inspecter l'état de votre script étape par étape.

  • Messages d'erreur clairs : Dans vos blocs `catch`, fournissez des messages d'erreur informatifs.

Module 4 : Fonctions avancées et gestion d'erreurs
40/93

Optimisation des Performances

Des scripts performants sont essentiels, surtout lorsqu'ils traitent de grandes quantités de données.

Éviter les opérations répétitives : Ne refaites pas le même calcul ou la même requête plusieurs fois si vous pouvez le faire une seule fois. Utiliser des méthodes efficaces : Privilégiez les méthodes intégrées pour la manipulation de tableaux et d'objets.

  • Limiter les appels aux services externes : Les interactions avec les services Google (Sheets, Docs, etc.) peuvent être coûteuses en temps.

Module 4 : Fonctions avancées et gestion d'erreurs
41/93

Gestion des Erreurs Spécifiques

Dans certains cas, vous voudrez gérer des erreurs plus précisément.

`throw` : Permet de déclencher manuellement une erreur pour que celle-ci soit capturée par un bloc `catch`. Tester les conditions : Utilisez des `if` pour vérifier les conditions avant d'exécuter des opérations potentiellement risquées.

javascript
function verifierAge(age) {
  if (age < 0) {
    throw new Error("L'âge ne peut pas être négatif.");
  }
  Logger.log("Âge valide : " + age);
}

try {
  verifierAge(-5);
} catch (e) {
  Logger.log("Erreur de validation : " + e.message);
}
Module 4 : Fonctions avancées et gestion d'erreurs
42/93

Bonnes Pratiques pour des Scripts Robustes

Commentez votre code : Expliquez les parties complexes. Nommez vos fonctions et variables de manière descriptive. Validez les entrées utilisateur ou les données lues. Utilisez des fonctions pour découper des tâches complexes.

  • Testez votre code dans différentes conditions.

Module 4 : Fonctions avancées et gestion d'erreurs
43/93

QUIZ DE VALIDATION

1. Quel est l'objectif principal d'utiliser des fonctions modulaires ?

Rendre le code plus long.
Améliorer la réutilisabilité et la lisibilité.
Augmenter la complexité.
Limiter l'utilisation des variables.

2. Qu'est-ce qu'une variable locale en Apps Script ?

Une variable accessible partout dans le script.
Une variable déclarée à l'intérieur d'une fonction, visible uniquement pendant son exécution.
Une variable qui disparaît après l'exécution du script.
Une variable qui ne peut pas être modifiée.

3. Quelle instruction permet de capturer et de gérer les erreurs dans Apps Script ?

`if...else`
`for...while`
`try...catch`
`return`

4. Le bloc `finally` est-il obligatoire dans une structure `try...catch` ?

Non, il est optionnel.
Oui, il est toujours obligatoire.
Seulement si une erreur se produit.
Seulement si aucune erreur ne se produit.

5. À quoi sert la clause `throw` ?

À arrêter l'exécution du script sans erreur.
À définir la portée d'une variable.
À déclencher manuellement une erreur, qui peut ensuite être capturée par un `catch`.
À retourner une valeur d'une fonction.

6. Quel est l'intérêt principal de limiter les appels aux services externes dans vos scripts ?

Pour réduire la taille du code.
Pour rendre le code plus difficile à lire.
Pour améliorer les performances et réduire les temps d'exécution.
Pour augmenter la consommation mémoire.

7. Quelle méthode est essentielle pour suivre l'exécution d'un script et examiner les valeurs des variables ?

`console.log()`
`Logger.log()`
`debug.log()`
`print.log()`

8. Si une fonction `calculerDivison(a, b)` est appelée avec `b=0`, quelle type d'erreur peut-on s'attendre à rencontrer sans gestion d'erreur appropriée ?

`TypeError`
`ReferenceError`
`DivisionByZeroError` (ou une erreur similaire dépendant du contexte exact d'Apps Script)
`SyntaxError`

9. Qu'est-ce qui n'est PAS une bonne pratique pour rendre un script Apps Script robuste ?

Utiliser des noms de variables descriptifs.
Valider les entrées.
Éviter de commenter le code, car cela le rend plus "léger".
Utiliser des fonctions pour découper les tâches.

10. Quelle est la fonction principale de la valeur de retour d'une fonction ?

Pour afficher directement une information à l'utilisateur.
Pour définir le nom de la fonction.
Pour transmettre un résultat calculé ou une donnée à la partie du script qui a appelé la fonction.
Pour exécuter une autre fonction.
Module 5 : Introduction aux Interfaces Utilisateur (UI)
44/93

Module 5 : Introduction aux Interfaces Utilisateur (UI)

Bienvenue dans ce module dédié à la création d'interfaces utilisateur (UI) interactives avec App Script. Après avoir exploré les bases du langage, nous allons maintenant donner vie à vos applications grâce à des interfaces visuelles attrayantes et fonctionnelles. Préparez-vous à transformer vos scripts en expériences utilisateurs fluides et intuitives.

Module 5 : Introduction aux Interfaces Utilisateur (UI)
45/93

Pourquoi une Interface Utilisateur ?

Une interface utilisateur, ou UI, est la passerelle entre vous et votre code. Elle permet à quiconque d'interagir avec votre application sans avoir à comprendre le langage sous-jacent. Une bonne UI améliore l'expérience utilisateur, rend l'application plus accessible et augmente son adoption. App Script offre des outils puissants pour construire ces interfaces directement dans votre environnement Google.

Module 5 : Introduction aux Interfaces Utilisateur (UI)
46/93

App Script & HTML : La Fondation

App Script s'intègre nativement avec HTML, CSS et JavaScript. Cela signifie que vous pouvez utiliser vos compétences existantes en développement web pour créer des interfaces riches. Nous allons utiliser ces technologies pour construire l'apparence et le comportement de nos applications. La puissance réside dans la combinaison de la logique App Script et de la présentation web.

Module 5 : Introduction aux Interfaces Utilisateur (UI)
47/93

Les Bases : Serveur vs Client

Dans App Script, il y a une distinction fondamentale entre le code qui s'exécute sur le serveur (App Script) et le code qui s'exécute dans le navigateur de l'utilisateur (HTML, CSS, JavaScript). App Script agit comme le moteur, exécutant les tâches, récupérant les données. L'interface HTML/CSS/JS est la vitrine, présentant les informations et capturant les interactions de l'utilisateur.

Module 5 : Introduction aux Interfaces Utilisateur (UI)
48/93

Créer votre Première Page HTML

Pour générer une page HTML, vous utilisez la méthode `HtmlService.createHtmlOutputFromFile()`. Cette méthode prend en argument le nom de votre fichier HTML. Vous pouvez ensuite afficher cette page en utilisant `SpreadsheetApp.getUi().showSidebar()` ou `showModalDialog()`, par exemple. Votre fichier HTML sera stocké dans votre projet App Script.

javascript
function showMyPage() {
  var html = HtmlService.createHtmlOutputFromFile('MyPage');
  SpreadsheetApp.getUi().showSidebar(html);
}
Module 5 : Introduction aux Interfaces Utilisateur (UI)
49/93

Structure d'un Fichier HTML

Un fichier HTML typique pour App Script inclut une structure de base avec ``, ``, `` (pour les métadonnées et les liens CSS/JS) et `` (pour le contenu visible). Vous pouvez y intégrer du JavaScript côté client pour dynamiser votre interface.

html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <title>Mon Interface</title>
  </head>
  <body>
    <h1>Bienvenue !</h1>
    <p>Ceci est votre première page.</p>
  </body>
</html>
Module 5 : Introduction aux Interfaces Utilisateur (UI)
50/93

Interaction : App Script et Client-Side JavaScript

L'interaction entre votre code App Script (serveur) et votre JavaScript côté client est cruciale. Vous pouvez appeler des fonctions App Script depuis votre JavaScript en utilisant `google.script.run`. Inversement, App Script peut injecter des données dans votre HTML ou exécuter du JavaScript côté client.

javascript
function onButtonClick() {
  google.script.run.withSuccessHandler(updateLabel).getServerData();
}

function updateLabel(data) {
  document.getElementById('message').innerText = data;
}
Module 5 : Introduction aux Interfaces Utilisateur (UI)
51/93

Aller plus loin : CSS pour le Style

Le CSS (Cascading Style Sheets) est utilisé pour styliser votre interface. Vous pouvez l'inclure directement dans une balise `` dans votre fichier HTML ou lier un fichier CSS externe. Un bon design améliore considérablement l'ergonomie et l'attrait de votre application. Pensez à la palette de couleurs, la typographie et la mise en page pour une expérience cohérente.

html
<head>
  <style>
    body {
      font-family: 'Open Sans', sans-serif;
      background-color: #FFFFFF;
      color: #5A208A;
    }
    h1 {
      color: #F4B73B;
    }
  </style>
</head>
Module 5 : Introduction aux Interfaces Utilisateur (UI)
52/93

Les Docks : Sidebar et Dialogues

App Script propose deux principales façons d'afficher vos interfaces : Sidebar : Une barre latérale qui apparaît sur le côté de l'application (feuille de calcul, document, etc.). Idéal pour les contrôles récurrents. Dialogues : Des fenêtres modales qui interrompent l'interaction principale. Utiles pour des actions ponctuelles ou des confirmations.

Module 5 : Introduction aux Interfaces Utilisateur (UI)
53/93

Module 5 : Récapitulatif et Préparation

Nous avons posé les bases pour la création d'interfaces utilisateur avec App Script. Vous savez maintenant comment générer du HTML, interagir entre le serveur et le client, et utiliser le CSS pour le style. Les prochaines étapes exploreront des widgets plus avancés et des modèles de conception pour des applications professionnelles.

Module 5 : Introduction aux Interfaces Utilisateur (UI)
54/93

QUIZ DE VALIDATION

1. Quelle méthode App Script est couramment utilisée pour créer une sortie HTML à partir d'un fichier ?

`HtmlService.createHtmlOutput()`
`HtmlService.createHtmlOutputFromFile()`
`Ui.createHtmlOutput()`
`ScriptApp.createHtmlOutputFromFile()`

2. Quel langage est principalement utilisé pour le style visuel d'une interface web ?

HTML
JavaScript
CSS
App Script

3. Pour appeler une fonction App Script depuis JavaScript côté client, quelle syntaxe est utilisée ?

`google.script.server.run`
`google.script.client.run`
`google.script.run`
`google.script.app.run`

4. Quel est l'objectif principal d'une interface utilisateur (UI) ?

Exécuter des calculs complexes en arrière-plan.
Permettre aux utilisateurs d'interagir avec une application sans connaître le code.
Stocker des données à long terme.
Envoyer des emails automatiquement.

5. Dans un projet App Script, où les fichiers HTML pour les interfaces sont-ils généralement stockés ?

Dans des dossiers externes sur Google Drive.
Directement dans le projet App Script lui-même.
Dans une base de données séparée.
Dans le code App Script .gs.

6. Quelle partie d'un fichier HTML contient les métadonnées, les liens vers les feuilles de style et les scripts ?

Le corps (`<body>`).
L'en-tête (`<head>`).
Le pied de page (`<footer>`).
La section principale (`<main>`).

7. Quelle méthode App Script permet d'afficher une interface utilisateur sous forme de barre latérale ?

`SpreadsheetApp.getUi().showModalDialog()`
`SpreadsheetApp.getUi().showSidebar()`
`Ui.showDialog()`
`DocumentApp.getUi().showSidebar()`

8. Le code JavaScript s'exécutant dans le navigateur de l'utilisateur est appelé :

JavaScript côté client.
JavaScript côté serveur.
App Script côté client.
Code HTML dynamique.

9. Lors de la création d'une interface utilisateur, quelle technologie est utilisée pour structurer le contenu de la page ?

CSS
HTML
JavaScript
App Script

10. Quel est l'avantage d'utiliser App Script pour la création d'interfaces ?

Il nécessite un développement web complet séparément.
Il est limité uniquement aux interfaces textuelles.
Il permet de créer des interfaces directement intégrées dans les applications Google Workspace et d'interagir avec elles.
Il ne supporte aucune technologie web standard.
Module 6 : Création d'Interfaces Web avec HTML Service
55/93

Module 6 : Création d'Interfaces Web avec HTML Service

Bienvenue dans ce module dédié à l'enrichissement de vos scripts Google avec des interfaces utilisateur dynamiques. Jusqu'à présent, nous avons exploré les bases d'App Script pour automatiser des tâches. Désormais, nous allons apprendre à interagir directement avec les utilisateurs grâce à HTML Service, permettant de créer des tableaux de bord, des formulaires personnalisés et bien plus encore au sein de l'écosystème Google.

Module 6 : Création d'Interfaces Web avec HTML Service
56/93

Introduction à HTML Service

HTML Service est l'outil d'App Script qui vous permet de générer des pages web dynamiques. Il fonctionne en utilisant des templates HTML, CSS et JavaScript standards, que vous pouvez ensuite intégrer dans vos applications Google (Sheets, Docs, Forms, etc.) sous forme de boîtes de dialogue, de panneaux latéraux ou de pages entières. C'est la passerelle vers une expérience utilisateur plus riche et interactive pour vos automatisations.

Module 6 : Création d'Interfaces Web avec HTML Service
57/93

Principes Fondamentaux

HTML Service permet à vos scripts de produire du contenu HTML. Ce contenu est rendu dans un environnement sécurisé (sandbox) pour protéger les données de l'utilisateur et l'application hôte. Vous pouvez ainsi créer des interfaces qui ressemblent à de véritables sites web, mais qui sont directement connectées à la logique de votre script.

Module 6 : Création d'Interfaces Web avec HTML Service
58/93

Créer votre Premier Template HTML

Pour commencer, créez un nouveau fichier `.html` dans votre projet App Script. C'est ici que vous écrirez votre code HTML. Par exemple, un simple "Bonjour, monde !" :

html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h1>Bonjour, monde !</h1>
  </body>
</html>
Module 6 : Création d'Interfaces Web avec HTML Service
59/93

Lier le Script au Template

Dans votre fichier `.gs` (votre script principal), vous utiliserez `HtmlService.createHtmlOutputFromFile('NomDuFichierHtml')` pour charger votre template. Ensuite, vous pourrez l'afficher via une fonction qui sera appelée depuis votre application Google.

javascript
function afficherBonjour() {
  var htmlOutput = HtmlService.createHtmlOutputFromFile('BonjourPage'); // Assurez-vous que le nom correspond à votre fichier .html
  SpreadsheetApp.getUi().showSidebar(htmlOutput); // Ou .showModalDialog()
}
Module 6 : Création d'Interfaces Web avec HTML Service
60/93

Utilisation de Templates DoM (Server-Side)

HTML Service offre une puissance supplémentaire avec les templates DoM (Document Object Model). Ils vous permettent d'injecter des données depuis votre script directement dans le HTML avant qu'il ne soit rendu. Utilisez la syntaxe `` pour afficher des variables et `` pour exécuter du code côté serveur.

html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h1>Salut, <?= nomUtilisateur ?> !</h1>
    <? if (messageAdmin) { ?>
      <p><?= messageAdmin ?></p>
    <? } ?>
  </body>
</html>
Module 6 : Création d'Interfaces Web avec HTML Service
61/93

Injecter des Données Dynamiques

Voici comment passer des données de votre script vers le template DoM :

javascript
function afficherDonneesUtilisateur() {
  var template = HtmlService.createTemplateFromFile('DonneesUtilisateur');
  template.nomUtilisateur = Session.getActiveUser().getEmail();
  template.messageAdmin = "Bienvenue sur votre espace personnalisé.";
  
  var htmlOutput = template.evaluate();
  htmlOutput.setTitle('Tableau de Bord');
  SpreadsheetApp.getUi().showSidebar(htmlOutput);
}
Module 6 : Création d'Interfaces Web avec HTML Service
62/93

Exécuter du Code JavaScript Côté Client

Vous pouvez également inclure du code JavaScript dans votre fichier HTML pour rendre l'interface interactive côté client. Ces scripts s'exécuteront dans le navigateur de l'utilisateur.

html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      function saluer() {
        alert('Bonjour depuis le client !');
      }
    </script>
  </head>
  <body>
    <h1>Interaction Client</h1>
    <button onclick="saluer()">Cliquez ici</button>
  </body>
</html>
Module 6 : Création d'Interfaces Web avec HTML Service
63/93

Communication entre Client et Serveur

Le mécanisme `google.script.run` est essentiel pour permettre à votre JavaScript côté client d'appeler des fonctions de votre script App Script côté serveur (et vice-versa). Cela ouvre la voie à des applications web complexes.

javascript
// Côté client (dans votre HTML)
function sauvegarderDonnees() {
  var nouvelleValeur = document.getElementById('inputValeur').value;
  google.script.run.avecSucces(callbackSucces).sauvegarderValeurServeur(nouvelleValeur);
}

function callbackSucces(resultat) {
  alert('Données sauvegardées : ' + resultat);
}

// Côté serveur (dans votre .gs)
function sauvegarderValeurServeur(valeur) {
  // Logique pour sauvegarder la valeur
  return "Succès : " + valeur;
}
Module 6 : Création d'Interfaces Web avec HTML Service
64/93

Sécurité et Best Practices

Sandbox : HTML Service utilise des environnements sandbox pour la sécurité. Comprenez leurs limitations. Validation des entrées : Validez toujours les données provenant du client avant de les traiter côté serveur. Obfuscation : Pour des éléments sensibles, considérez des techniques d'obfuscation de code côté client. Performance : Optimisez vos templates HTML et votre JavaScript pour une meilleure expérience utilisateur.

Module 6 : Création d'Interfaces Web avec HTML Service
65/93

Cas d'Usage Avancés

Avec HTML Service, vous pouvez créer : Des interfaces personnalisées pour des formulaires avancés. Des tableaux de bord interactifs pour visualiser des données. Des outils d'administration pour vos feuilles de calcul. Des applications pour automatiser des flux de travail complexes.

Module 6 : Création d'Interfaces Web avec HTML Service
66/93

QUIZ DE VALIDATION

1. Quel service d'App Script permet de créer des interfaces web ?

Properties Service
Html Service
Url Fetch Service
Calendar Service

2. Quel est le rôle principal de `HtmlService.createHtmlOutputFromFile('NomDuFichier')` ?

Charger un fichier HTML pour l'afficher.
Exécuter du code JavaScript côté serveur.
Créer une nouvelle feuille de calcul.
Envoyer un email.

3. Comment injecte-t-on une variable côté serveur dans un template HTML ?

`<? variable ?>`
`<?= variable ?>`
`<%= variable %>`
`{{ variable }}`

4. Quel mécanisme permet au JavaScript côté client d'appeler une fonction App Script côté serveur ?

`Server.run()`
`Client.call()`
`google.script.run`
`AppScript.invoke()`

5. L'exécution de votre code HTML et JavaScript se fait dans un environnement :

Non sécurisé (ouvert)
Sécurisé (sandbox)
Exclusif au serveur
Indifférent à la sécurité

6. Quelle syntaxe est utilisée dans un template HTML pour exécuter du code côté serveur sans afficher de résultat ?

`<?= ... ?>`
`<? ... ?>`
`<?- ... ?>`
`<?= ... ?>`

7. Vous créez une interface dans un panneau latéral. Quelle méthode d'affichage utiliseriez-vous probablement ?

`SpreadsheetApp.getUi().showModalDialog()`
`SpreadsheetApp.getUi().showSidebar()`
`SpreadsheetApp.getUi().alert()`
`SpreadsheetApp.getUi().showSidebar('NomDuFichierHtml')`

8. Quelle est la bonne pratique concernant les données entrées par l'utilisateur côté client ?

Les utiliser directement sans vérification.
Les valider côté serveur avant traitement.
Les ignorer complètement.
Les stocker uniquement côté client.

9. Quel type de fichier App Script est généralement utilisé pour le code côté serveur qui utilise HTML Service ?

`.html`
`.gs`
`.js`
`.css`

10. Lequel de ces éléments N'EST PAS typiquement utilisé avec HTML Service ?

HTML
CSS
JavaScript
Python
Module 7 : Conception et Développement d'une Application Web Simple
67/93

Module 7 : Conception et Développement d'une Application Web Simple

Bienvenue dans ce module dédié à la création de votre première application web avec Google Apps Script. Après avoir exploré les bases du langage et ses interactions avec Google Workspace, nous allons maintenant passer à l'étape concrète : transformer vos scripts en interfaces web interactives et conviviales. Préparez-vous à donner vie à vos idées !

Module 7 : Conception et Développement d'une Application Web Simple
68/93

Comprendre le Web et Apps Script

Une application web repose sur deux concepts principaux : le client (votre navigateur) et le serveur (où votre code s'exécute). Google Apps Script agit comme un serveur qui génère le contenu HTML envoyé au client. Nous allons utiliser les fonctions de `HtmlService` pour créer ces pages web dynamiques. Cela permet de présenter des données, de recueillir des informations et d'automatiser des tâches de manière visuelle.

Module 7 : Conception et Développement d'une Application Web Simple
69/93

Introduction à HtmlService

`HtmlService` est la bibliothèque essentielle pour générer des interfaces utilisateur web dans Google Apps Script. Elle vous permet d'écrire du code HTML, CSS et JavaScript directement dans votre projet Apps Script. Vous pouvez ainsi créer des formulaires, des tableaux de bord personnalisés et des outils interactifs qui s'exécutent dans un navigateur web.

Module 7 : Conception et Développement d'une Application Web Simple
70/93

Créer une Page HTML Simple

Pour commencer, nous allons créer un fichier HTML simple. Dans votre projet Apps Script, allez dans "Fichier" > "Nouveau" > "Fichier HTML". Nommez ce fichier, par exemple, `Index.html`. Vous pouvez y écrire du code HTML basique pour tester son affichage. Ensuite, créez une fonction dans votre script `.gs` pour servir cette page.

javascript
function doGet() {
  return HtmlService.createTemplateFromFile('Index').evaluate();
}
Module 7 : Conception et Développement d'une Application Web Simple
71/93

Afficher le Contenu HTML

La fonction `doGet()` est automatiquement appelée lorsqu'une URL de déploiement web est accédée. `HtmlService.createTemplateFromFile('Index')` charge votre fichier HTML. `.evaluate()` le rend exécutable, et le retourne comme réponse HTTP. Ouvrez votre projet Apps Script, déployez-le en tant qu'application web (paramètres de déploiement), puis accédez à l'URL générée pour voir votre page.

Module 7 : Conception et Développement d'une Application Web Simple
72/93

Intégrer des Données Dynamiques avec `HtmlTemplate`

Les modèles HTML (`.html` files) dans Apps Script sont plus que du simple HTML. Ils supportent des "directives" spéciales qui permettent d'intégrer du code JavaScript côté serveur. Par exemple, vous pouvez afficher des données provenant de Google Sheets. Cela rend vos applications web dynamiques et réactives.

Module 7 : Conception et Développement d'une Application Web Simple
73/93

Utiliser les Directives de Modèle

Les directives sont des balises spéciales comme `` ou ``. `` exécute du code JavaScript sans afficher de sortie. `` exécute du code JavaScript et affiche le résultat dans le HTML. Utilisez-les pour boucler sur des données, afficher des variables, ou exécuter des fonctions serveur.

html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h1>Bienvenue !</h1>
    <p>Voici une liste d'éléments :</p>
    <ul>
      <? var items = ["Pomme", "Banane", "Orange"]; ?>
      <? for (var i = 0; i < items.length; i++) { ?>
        <li><?= items[i] ?></li>
      <? } ?>
    </ul>
  </body>
</html>
Module 7 : Conception et Développement d'une Application Web Simple
74/93

Communication Client-Serveur

Pour des interactions plus avancées, vous avez besoin de faire communiquer votre page HTML (client) avec votre script Apps Script (serveur). `google.script.run` est la méthode clé. Elle permet d'appeler des fonctions Apps Script depuis le JavaScript côté client et de recevoir les résultats.

javascript
// Dans votre fichier .gs
function getGreeting() {
  return "Bonjour du serveur !";
}

// Dans votre fichier .html (dans une balise <script>)
function loadGreeting() {
  google.script.run.withSuccessHandler(displayGreeting).getGreeting();
}

function displayGreeting(greeting) {
  document.getElementById('greetingMessage').innerText = greeting;
}

// Appel initial
loadGreeting();
Module 7 : Conception et Développement d'une Application Web Simple
75/93

Envoyer des Données du Client au Serveur

Vous pouvez également envoyer des données du client vers le serveur. La méthode `google.script.run` prend des arguments que votre fonction serveur peut utiliser.

javascript
// Dans votre fichier .html (dans une balise <script>)
function sendDataToServer() {
  var userInput = document.getElementById('myInput').value;
  google.script.run.withSuccessHandler(handleServerResponse).processUserInput(userInput);
}

// Dans votre fichier .gs
function processUserInput(data) {
  Logger.log("Données reçues du client : " + data);
  return "Traitement terminé pour : " + data;
}
Module 7 : Conception et Développement d'une Application Web Simple
76/93

Améliorer l'Interface avec CSS et JavaScript

Pour rendre votre application web plus attrayante et fonctionnelle, vous pouvez intégrer CSS pour le style et JavaScript pour les interactions côté client. Vous pouvez inclure du CSS et du JavaScript directement dans votre fichier HTML, ou les lier à partir de fichiers externes (bien que pour des applications simples, l'intégration directe soit plus aisée).

Module 7 : Conception et Développement d'une Application Web Simple
77/93

Déploiement en tant qu'Application Web

Une fois votre application web prête, vous devez la déployer. Dans l'éditeur Apps Script, allez dans "Déploiement" > "Nouveau déploiement". Choisissez le type "Application web". Configurez qui peut accéder à l'application (vous, toute personne avec un compte Google, ou publiquement). Copiez l'URL de l'application web pour la partager ou l'utiliser.

Module 7 : Conception et Développement d'une Application Web Simple
78/93

Considérations de Sécurité

Lorsque vous partagez votre application web, pensez à la sécurité. Évitez de manipuler des données sensibles sans une authentification appropriée. Les appels `google.script.run` sont limités aux fonctions explicitement disponibles. Soyez prudent avec les données envoyées par les utilisateurs et celles affichées.

Module 7 : Conception et Développement d'une Application Web Simple
79/93

Optimisation pour une Meilleure Expérience

Pour une expérience utilisateur optimale, assurez-vous que votre application web est responsive (s'adapte aux différentes tailles d'écran). Testez-la sur différents navigateurs. Optimisez le temps de chargement en minimisant la quantité de données transmises et en chargeant les scripts de manière asynchrone si nécessaire.

Module 7 : Conception et Développement d'une Application Web Simple
80/93

Exercice Pratique : Créer un Formulaire Simple

Créez un formulaire HTML qui permet à l'utilisateur de saisir son nom. Utilisez `google.script.run` pour envoyer ce nom à une fonction Apps Script qui le logguera. Affichez ensuite un message de confirmation généré par le serveur.

Module 7 : Conception et Développement d'une Application Web Simple
81/93

Récapitulatif du Module

Vous avez appris à : Utiliser `HtmlService` pour créer des pages web. Intégrer des données dynamiques avec les modèles HTML. Implémenter la communication client-serveur avec `google.script.run`. Déployer votre application web.

Ces compétences sont fondamentales pour construire des outils puissants et personnalisés basés sur Google Apps Script.

Module 7 : Conception et Développement d'une Application Web Simple
82/93

QUIZ DE VALIDATION

1. Quelle bibliothèque principale est utilisée dans Google Apps Script pour créer des interfaces web ?

`SpreadsheetApp`
`DocumentApp`
`HtmlService`
`GmailApp`

2. Quelle directive de modèle HTML permet d'exécuter du JavaScript côté serveur et d'afficher le résultat ?

`<? ... ?>`
`<?= ... ?>`
`<script> ... </script>`
`{{ ... }}`

3. Quelle fonction doit être implémentée dans un script `.gs` pour servir une application web ?

`doPost()`
`doGet()`
`doPut()`
`doDelete()`

4. Comment appelle-t-on l'interface qui exécute le code Apps Script et génère la page web ?

Le client
Le serveur
Le navigateur
La base de données

5. Quelle méthode est utilisée dans le JavaScript côté client pour appeler une fonction Apps Script côté serveur ?

`server.run()`
`google.script.run`
`client.callServer()`
`AppsScript.invoke()`

6. Pour afficher le résultat d'une fonction serveur appelée avec `google.script.run`, quelle méthode de gestionnaire est couramment utilisée ?

`withErrorHandler()`
`withTimeoutHandler()`
`withOnSuccess()`
`withSuccessHandler()`

7. Le fichier HTML utilisé avec `HtmlService` peut contenir du code :

Uniquement HTML
HTML, CSS et JavaScript
Uniquement JavaScript
Uniquement CSS

8. Quel est le principal avantage d'utiliser `HtmlService` ?

Créer des applications natives pour mobile.
Exécuter le code uniquement côté client pour une performance accrue.
Créer des interfaces web interactives personnalisées à partir de scripts.
Accéder directement aux bases de données externes sans authentification.

9. Lors du déploiement d'une application web, qui peut généralement accéder à l'application ?

Seulement le développeur.
Tous les utilisateurs d'Internet sans restriction.
Le développeur, des utilisateurs spécifiques, ou publiquement, selon la configuration.
Uniquement les utilisateurs ayant un rôle d'administrateur.

10. Quel est le rôle du CSS dans une application web créée avec Apps Script ?

Gérer la logique métier et l'interaction avec les services Google.
Définir l'apparence visuelle et la mise en page de l'interface.
Stocker les données de manière persistante.
Exécuter des requêtes vers des serveurs externes.
Module 8 : Déploiement et Partage
83/93

Module 8 : Déploiement et Partage

Félicitations pour votre parcours à travers les fondamentaux d'App Script ! Ce module, "Déploiement et Partage", est la touche finale qui vous permettra de rendre vos créations accessibles et utiles à d'autres. Nous allons découvrir comment partager vos scripts et vos applications web générées, assurant ainsi leur diffusion et leur impact.

Module 8 : Déploiement et Partage
84/93

Partage de Scripts App Script

Une fois votre script prêt, le partage est la clé pour le rendre opérationnel pour d'autres utilisateurs. App Script offre plusieurs niveaux de contrôle sur qui peut accéder à votre code et à ses fonctionnalités. Le partage peut s'effectuer au niveau du projet, en définissant les permissions des collaborateurs.

Module 8 : Déploiement et Partage
85/93

Options de Partage

Vous pouvez définir votre projet comme privé (accessible uniquement à vous), partager avec des utilisateurs spécifiques (par leur adresse email Google), ou le rendre accessible à des personnes possédant le lien. Il est également possible de le partager avec l'ensemble de votre organisation Google Workspace, si applicable.

Module 8 : Déploiement et Partage
86/93

Permissions de Partage

Lors du partage, vous pouvez octroyer différents niveaux de permissions : "Peut afficher" (lecture seule), "Peut modifier" (édition du code), et "Peut exécuter" (utilisation du script sans voir ni modifier le code). Le choix dépend de votre objectif : collaboration, mise à disposition d'une fonctionnalité, ou audit.

Module 8 : Déploiement et Partage
87/93

Création d'une Web App

Lorsque vous avez développé une interface utilisateur interactive avec App Script, vous pouvez la transformer en Web App. Cela permet de déployer votre application via une URL unique, la rendant accessible depuis n'importe quel navigateur web, sans nécessiter l'installation d'un logiciel ou l'accès à Google Workspace.

Module 8 : Déploiement et Partage
88/93

Déploiement en tant que Web App

Pour déployer votre projet en tant que Web App, vous devez utiliser la fonction `doGet()` ou `doPost()`. Ces fonctions gèrent les requêtes HTTP entrantes. Le déploiement se fait ensuite depuis l'éditeur App Script, en sélectionnant "Déployer" puis "Nouvelle version".

Module 8 : Déploiement et Partage
89/93

Configuration du Déploiement

Lors du déploiement, vous devrez spécifier les "Paramètres d'exécution" : qui peut exécuter l'application (vous seul, utilisateurs de votre domaine, tout le monde) et qui peut y accéder (vous seul, utilisateurs de votre domaine, tout le monde). Ces paramètres sont cruciaux pour la sécurité et l'accessibilité.

Module 8 : Déploiement et Partage
90/93

Partage de Web Apps

Une fois déployée, votre Web App dispose d'une URL unique. Cette URL peut être partagée librement selon les autorisations que vous avez définies. Elle est le pont entre votre code App Script et le monde extérieur, permettant à votre application de fonctionner de manière autonome.

Module 8 : Déploiement et Partage
91/93

Cas d'Usage : Formulaires et Interfaces

Les Web Apps déployées sont idéales pour créer des formulaires de saisie personnalisés, des tableaux de bord interactifs, des outils de gestion de données simples, ou même des prototypes d'applications web, le tout hébergé et exécuté par App Script.

Module 8 : Déploiement et Partage
92/93

Bonnes Pratiques de Partage

Soyez toujours attentif aux permissions que vous accordez. Revoyez régulièrement qui a accès à vos scripts et Web Apps. Pour les données sensibles, assurez-vous que les autorisations d'exécution sont restrictives et que votre code gère correctement la confidentialité.

Module 8 : Déploiement et Partage
93/93

QUIZ DE VALIDATION

Quelle est la fonction principale pour exécuter une Web App dans App Script ?

`doSomething()`
`doGet()` ou `doPost()`
`runApp()`
`initWeb()`

Quelles sont les trois principales permissions de partage pour un projet App Script ?

Lire, Écrire, Exécuter
Peut afficher, Peut modifier, Peut exécuter
Accès complet, Accès limité, Accès invité
Visionner, Éditer, Administrer

Comment une Web App est-elle rendue accessible au public ou à des utilisateurs spécifiques ?

Par un identifiant unique de projet
Via une URL de déploiement unique
En l'intégrant directement dans Google Sheets
En la téléchargeant comme un fichier .gs

Lors du déploiement d'une Web App, quel paramètre définit qui peut l'exécuter ?

Permissions de collaboration
Audience de la Web App
Paramètres d'exécution
Partage de lien

Quel niveau de permission permet à un utilisateur de voir le code source mais pas de le modifier ?

Peut exécuter
Peut modifier
Peut afficher
Administrateur

Est-il possible de rendre une Web App accessible à tous sur internet sans avoir à se connecter à un compte Google ?

Oui, en choisissant "Tout le monde" pour "Qui peut accéder à l'application" lors du déploiement.
Non, il faut toujours un compte Google.
Seulement si le script est ouvert à toute l'organisation Google Workspace.
Uniquement si l'option "Peut afficher" est choisie.

Quelle est la fonction qui gère les requêtes POST entrantes pour une Web App ?

`doGet()`
`handleRequest()`
`doPost()`
`processData()`

Le partage d'un script App Script au niveau du projet affecte-t-il directement les Web Apps déployées à partir de ce projet ?

Oui, toujours, les permissions sont identiques.
Non, les permissions de partage du script et de la Web App sont configurées séparément.
Seulement si la Web App est déployée en mode "exécuter en tant que moi".
Oui, mais seulement pour les utilisateurs internes.

Quel est l'un des principaux avantages de déployer une application avec App Script en tant que Web App ?

Elle est exécutée uniquement sur votre ordinateur local.
Elle nécessite une installation complexe sur chaque appareil.
Elle est accessible via une simple URL depuis n'importe quel navigateur.
Elle ne peut être utilisée qu'une seule fois.

Pourquoi est-il important de vérifier régulièrement les permissions de partage de vos scripts et Web Apps ?

Pour augmenter le nombre d'utilisateurs potentiels.
Pour découvrir de nouvelles fonctionnalités d'App Script.
Pour garantir la sécurité et la confidentialité des données et du code.
Pour recevoir des notifications de mise à jour.