, ,

Ne ratez plus jamais un rendez-vous ! Recevez votre agenda de la semaine par e-mail, automatiquement.

Commencez votre lundi sereinement : Le script qui vous envoie votre planning de la semaine

Nous connaissons tous cette sensation. C’est lundi matin, le café est à peine prêt, et vous ouvrez votre ordinateur en vous demandant : « Qu’est-ce que j’ai au programme cette semaine ? » On ouvre Google Agenda, on navigue entre les jours, on essaie d’avoir une vue d’ensemble… et on perd déjà un temps précieux.

Et si, à la place, vous receviez automatiquement un e-mail clair et concis à 8h00 pétantes chaque lundi matin, résumant tous vos rendez-vous et événements pour les 7 prochains jours ?

Aujourd’hui, je vous montre comment transformer cette idée en réalité grâce à la puissance cachée de Google : Apps Script. C’est un outil gratuit, intégré à votre compte Google, qui vous permet d’automatiser à peu près tout. Pas besoin d’être un développeur de génie, suivez simplement le guide !

Pourquoi c’est intéressant ?

  • Visibilité instantanée : Plus besoin de chasser l’information. Vous avez une vue d’ensemble de votre semaine avant même de l’avoir commencée.
  • Gain de temps : C’est quelques minutes de gagnées chaque lundi, mais surtout, une charge mentale en moins.
  • « Zéro oubli » : En ayant un aperçu clair, vous anticipez mieux les préparations nécessaires pour vos réunions.
  • C’est 100% gratuit et fonctionne en arrière-plan. « Configurez et oubliez ! »

Mettez-le en place en 5 minutes

Prêt à automatiser votre organisation ? C’est parti !

Étape 1 : Ouvrir l’éditeur de script

La façon la plus simple est de vous rendre sur script.google.com et de cliquer sur « Nouveau projet » en haut à gauche.

Alternative : Vous pouvez aussi l’ouvrir depuis un outil Google (comme Google Sheets, Docs, ou même Agenda). Dans Google Agenda, cliquez sur la roue crantée ⚙️ (Paramètres) > « Paramètres », puis dans le menu de gauche, cliquez sur « Apps Script ».

Donnez un nom à votre projet (par ex. « Résumé Agenda Hebdo »).

Étape 2 : Coller le code

L’éditeur vous présentera un fichier vide nommé Code.gs. Effacez tout ce qu’il contient et collez l’intégralité du code (celui en français fourni au début de cet article).

/**
 * Récupère dynamiquement l'e-mail de l'utilisateur qui exécute le script.
 * L'e-mail sera envoyé à cette personne.
 */
const EMAIL_DESTINATAIRE = Session.getActiveUser().getEmail(); 

/**
 * Récupère les événements à venir du calendrier et envoie un résumé hebdomadaire
 * formaté par e-mail.
 */
function envoyerResumeHebdomadaire() {
  const aujourdhui = new Date();
  // Calcule la date dans 7 jours
  const dansUneSemaine = new Date(aujourdhui.getTime() + 7 * 24 * 60 * 60 * 1000);

  try {
    const calendrier = CalendarApp.getDefaultCalendar();
    const evenements = calendrier.getEvents(aujourdhui, dansUneSemaine);

    const sujet = `Votre agenda du ${aujourdhui.toLocaleDateString('fr-FR')} au ${dansUneSemaine.toLocaleDateString('fr-FR')}`;
    
    // Construction du corps de l'e-mail en HTML pour une belle mise en forme
    let corpsHtml = `
      <body style="font-family: Arial, sans-serif; line-height: 1.6;">
        <h2 style="color: #1a73e8;">Votre résumé d'agenda hebdomadaire</h2>
        <p>Bonjour, voici vos événements à venir pour les 7 prochains jours :</p>
    `;

    if (evenements.length === 0) {
      // Utilisation d'apostrophes inverses (backticks) pour gérer l'apostrophe
      corpsHtml += `<p>Vous n'avez aucun événement cette semaine. Profitez de votre temps libre !</p>`;
    } else {
      corpsHtml += `
        <table style="width: 100%; border-collapse: collapse;">
          <tr style="background-color: #f2f2f2; text-align: left;">
            <th style="padding: 12px; border: 1px solid #ddd;">Titre</th>
            <th style="padding: 12px; border: 1px solid #ddd;">Date et heure</th>
          </tr>
      `;
      
      // Boucle sur chaque événement trouvé
      evenements.forEach(evenement => {
        const titre = evenement.getTitle();
        // Utilise 'fr-FR' pour un format de date et heure local
        const debut = evenement.getStartTime().toLocaleString('fr-FR');
        const fin = evenement.getEndTime().toLocaleString('fr-FR');
        
        // Gère les événements d'une journée entière différemment
        const horaire = evenement.isAllDayEvent() ? "Toute la journée" : `${debut} - ${fin}`;

        corpsHtml += `
          <tr>
            <td style="padding: 12px; border: 1px solid #ddd;">${titre}</td>
            <td style="padding: 12px; border: 1px solid #ddd;">${horaire}</td>
          </tr>
        `;
      });
      corpsHtml += "</table>";
    }

    corpsHtml += `<p style="font-size: 12px; color: #777; margin-top: 20px;">Ceci est un e-mail automatisé envoyé par Google Apps Script et l'Atelier Informatique.</p></body>`;

    // Envoi de l'e-mail
    GmailApp.sendEmail(EMAIL_DESTINATAIRE, sujet, "", { htmlBody: corpsHtml });
    console.log('E-mail résumé envoyé avec succès à ' + EMAIL_DESTINATAIRE);

  } catch (e) {
    // --- CORRECTION APPLIQUÉE ICI ---
    // Gestion des erreurs
    // Utilisation de backticks (`) pour gérer l'apostrophe dans "l'envoi"
    // et de e.stack pour un message d'erreur plus détaillé (avec le numéro de ligne).
    console.error(`Erreur lors de l'envoi du résumé hebdomadaire : ${e.stack}`);
  }
}

/**
 * Crée un déclencheur (trigger) qui exécute automatiquement la fonction envoyerResumeHebdomadaire
 * tous les lundis matin.
 * Vous n'avez besoin d'exécuter cette fonction qu'UNE SEULE FOIS depuis l'éditeur Apps Script
 * pour mettre en place l'automatisation.
 */
function creerDeclencheurHebdomadaire() {
  const declencheurs = ScriptApp.getProjectTriggers();
  
  // Empêche la création de déclencheurs en double pour cette fonction
  for (const declencheur of declencheurs) {
    if (declencheur.getHandlerFunction() === 'envoyerResumeHebdomadaire') {
      ScriptApp.deleteTrigger(declencheur);
    }
  }

  // Crée le nouveau déclencheur
  ScriptApp.newTrigger('envoyerResumeHebdomadaire')
    .timeBased() // Basé sur le temps
    .onWeekDay(ScriptApp.WeekDay.MONDAY) // S'exécute le LUNDI
    .atHour(8) // À 8h00 du matin
    .inTimezone(Session.getScriptTimeZone()) // Utilise le fuseau horaire de votre script
    .create();

  console.log('Déclencheur créé pour une exécution hebdomadaire le lundi à 8h00.');
}

Étape 3 : La configuration …

Aucune configuration n’est nécessaire.

Cliquez juste sur l’icône de disquette 💾 pour enregistrer votre projet.

Étape 4 : Tester le script (Optionnel mais recommandé)

Assurons-nous que tout fonctionne.

  1. Dans la barre de menu en haut (à côté de « Déboguer »), sélectionnez la fonction envoyerResumeHebdomadaire.
  2. Cliquez sur le bouton « Exécuter« .

La première fois, Google vous demandera des autorisations. C’est tout à fait normal ! Le script a besoin de votre permission pour :

  • Lire votre calendrier (pour trouver les événements).
  • Envoyer un e-mail (pour vous envoyer le résumé).

Cliquez sur « Examiner les autorisations », choisissez votre compte Google, et (cliquez sur « Paramètres avancés » si nécessaire) « Autoriser ».

Une fois l’exécution terminée, vérifiez votre boîte de réception ! Vous devriez avoir reçu votre premier résumé.

Étape 5 : Activer l’automatisation (Le « Trigger »)

Maintenant, disons à Google de faire cela pour nous chaque semaine.

  1. Dans la barre de menu, sélectionnez cette fois la fonction creerDeclencheurHebdomadaire.
  2. Cliquez sur le bouton « Exécuter« .

Vous n’avez besoin de faire cela QU’UNE SEULE FOIS. Cette fonction vient de dire à Google : « Hé, exécute la fonction envoyerResumeHebdomadaire tous les lundis à 8h00 pour moi. »

Vous pouvez vérifier que cela a fonctionné en cliquant sur l’icône en forme de réveil ⏰ (« Déclencheurs ») dans le menu de gauche. Vous devriez y voir votre nouvelle automatisation.

Et voilà !

C’est terminé ! Lundi prochain, à 8h00, vous recevrez votre premier résumé d’agenda entièrement automatisé.

C’est un exemple simple de ce qu’Apps Script peut faire. À partir de là, vous pourriez le personnaliser :

  • Changer le jour (pourquoi pas un envoi le vendredi soir ?) en modifiant .onWeekDay(ScriptApp.WeekDay.MONDAY).
  • Changer l’heure en modifiant .atHour(8).
  • Ajouter un message de bienvenue personnalisé.

J’espère que cette astuce vous aidera à mieux vous organiser.

Et vous, avez-vous d’autres idées pour automatiser votre quotidien numérique ? Partagez-les en commentaire !