Automatiser la création d’événements Google Agenda avec Google Sheets et Apps Script
Gérer des événements manuellement dans Google Agenda peut être fastidieux. Avec Google Apps Script, nous pouvons automatiser cette tâche pour créer un événement dans Google Agenda à partir d’une feuille Google Sheets dès qu’une case est cochée.
Fonctionnement du script
1. Détection de la modification
- Lorsque l’utilisateur coche une case dans une colonne spécifique, le script est déclenché.
- Il vérifie si la modification concerne la bonne feuille et la bonne colonne.
2. Récupération des informations
Le script extrait les données de la ligne concernée :
- Titre de l’événement (composé de colonnes A et B)
- Date de l’événement (colonne C)
- Email du participant (colonne D)
3. Conversion de la date
Les dates saisies sous forme de texte (“dd Mmm yyyy”) sont converties en format utilisable.
4. Création de l’événement
- L’événement est automatiquement ajouté à Google Agenda.
- Si un email est renseigné, le participant est ajouté.
5. Décochage automatique de la case
Une fois l’événement créé, la case est décochée pour éviter un double déclenchement.
Configuration
Donnée | Colonne |
---|---|
Titre Partie 1 | A |
Titre Partie 2 | B |
Date | C |
Email participant | D |
Case à cocher | E |
💻 Code du script
function onEdit(e) { try { if (!e) { console.log("Aucune modification détectée. Arrêt du script."); return; } // Configuration des colonnes et de la feuille const CONFIG = { nomFeuille: "Ventes 2025", colonneTitre1: 1, // A colonneTitre2: 2, // B colonneDate: 3, // C colonneEmail: 4, // D colonneCaseCochee: 5 // E }; // Récupération des détails de la modification const feuille = e.source.getActiveSheet(); const plage = e.range; const ligne = plage.getRow(); const colonne = plage.getColumn(); // Vérification que la modification concerne bien la bonne feuille et colonne if ( feuille.getName() !== CONFIG.nomFeuille || colonne !== CONFIG.colonneCaseCochee || e.value !== "TRUE" ) { return; } console.log(`Modification détectée en ligne ${ligne}, colonne ${colonne}. Traitement en cours...`); // Récupération des données de la ligne modifiée const ligneDonnees = feuille.getRange(ligne, 1, 1, feuille.getLastColumn()).getValues()[0]; // Vérification et création du titre const titre1 = ligneDonnees[CONFIG.colonneTitre1 - 1]?.toString().trim() || ""; const titre2 = ligneDonnees[CONFIG.colonneTitre2 - 1]?.toString().trim() || ""; const titre = `${titre1} - ${titre2}`.trim(); if (!titre1 && !titre2) { console.error("Erreur : Titre de l'événement vide. L'événement ne peut pas être créé."); return; } // Vérification de l'email du participant const emailParticipant = ligneDonnees[CONFIG.colonneEmail - 1]?.toString().trim(); if (emailParticipant && !emailParticipant.includes("@")) { console.error(`Erreur : Email du participant invalide (${emailParticipant}).`); return; } // Vérification et conversion de la date const dateTexte = ligneDonnees[CONFIG.colonneDate - 1]?.toString().trim(); if (!dateTexte) { console.error("Erreur : Date de l'événement manquante."); return; } const convertirDate = (dateTexte) => { try { const [jour, moisAbrege, annee] = dateTexte.split(" "); const mois = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; const indexMois = mois.indexOf(moisAbrege); if (indexMois === -1 || isNaN(jour) || isNaN(annee)) throw new Error("Format de date incorrect"); return new Date(annee, indexMois, jour); } catch (erreur) { console.error(`Erreur lors de la conversion de la date : ${dateTexte}`); return null; } }; const dateEvenement = convertirDate(dateTexte); if (!dateEvenement || isNaN(dateEvenement.getTime())) { console.error("Erreur : Date de l'événement invalide."); return; } // Création de l’événement dans Google Agenda try { const calendrier = CalendarApp.getDefaultCalendar; if (!calendrier) { console.error("Erreur : Impossible d’accéder au calendrier."); return; } const evenement = calendrier.createAllDayEvent(titre, dateEvenement); // Ajout du participant si email valide if (emailParticipant) { evenement.addGuest(emailParticipant); console.log(`Participant ajouté : ${emailParticipant}`); } // Décocher la case pour éviter un re-déclenchement plage.setValue(false); console.log(`Événement créé : ${evenement.getTitle()} le ${dateEvenement.toDateString()}`); } catch (erreur) { console.error(`Erreur lors de la création de l'événement : ${erreur.message}`); } } catch (erreur) { console.error(`Erreur critique dans le script : ${erreur.message}`); } }
Avantages du script
- Gain de temps : Plus besoin de créer les événements manuellement
- Automatisation simple et efficace
- Réduction des erreurs grâce à l’extraction automatique des données
- Idéal pour les équipes commerciales, RH, ou logistiques
Avec Google Apps Script, il est possible de simplifier la gestion des événements en automatisant la création d’événements sur Google Agenda. Ce script permet aux utilisateurs de cocher une case dans Google Sheets pour planifier instantanément un événement, sans effort supplémentaire. 🚀
Si cet article vous a été utile, n’hésitez pas à le partager et à commenter ! 😊
Vous aimez mes articles sur Google Workspace ? Offrez-moi un café virtuel via un pourboire PayPal !