2nd Jul 2025 13 minutes de lecture SQL rencontre Google Calendar : Analyse d'une année de réunions Jakub Romanowski Projet SQL analyse des données Table des matières Pourquoi analyser votre calendrier ? Étape 1 : Exportation de votre calendrier Google Étape 2 : Convertir le fichier .ics dans un format compatible avec SQL Étape 3 : Importer le fichier CSV dans votre base de données SQL Étape 1 : Configurer votre table PostgreSQL Étape 2 : Charger les données du fichier CSV Etape 4 : Analyser vos réunions avec SQL Nombre total de réunions Temps total passé en réunion (heures) Durée moyenne des réunions (minutes) Réunions par mois Les 5 jours les plus chargés Étape 5 : Visualiser les données Cas d'utilisation pour différents rôles En option : Automatiser l'ensemble Étapes suivantes Vous arrive-t-il d'avoir l'impression que votre agenda dirige votre vie ? Vous enchaînez les réunions, vous n'avez pratiquement pas le temps de travailler et vous ne savez pas où est passé votre temps ? Vous n'êtes pas seul. Et si vous pouviez lancer une requête SQL rapide et savoir exactement combien de temps vous avez passé en réunions l'année dernière, quels mois ont été les plus chargés, et si vos synchronisations hebdomadaires dévorent vos matinées ? C'est l'objet de ce guide. Je vous montrerai comment exporter votre calendrier Google, le transformer dans un format compatible avec SQL et utiliser des requêtes SQL simples pour analyser vos habitudes en matière de réunions au cours de l'année écoulée. Vous voulez rafraîchir vos connaissances en SQL avant de vous lancer ? Consultez le cours SQL pour les débutants. Il est parfait pour les débutants ou toute personne souhaitant améliorer son jeu de requêtes. Pourquoi analyser votre calendrier ? Pourquoi prendre la peine d'analyser votre calendrier ? Voici quelques vraies raisons : Vous voulez savoir combien de temps vous passez en réunion. Il est facile de perdre le fil lorsque chaque jour comporte deux ou trois blocs réservés. Le fait de voir le nombre total d'heures peut vous ouvrir les yeux. Vous soupçonnez que certains jours ou certaines semaines sont surchargés. Peut-être que les mercredis sont toujours bondés, ou que chaque lundi ressemble à un marathon d'appels. Vous voulez trouver ces schémas à l'aide de données réelles. Vous êtes curieux de savoir si les réunions récurrentes sont réellement utiles. Les synchronisations hebdomadaires et les réunions bihebdomadaires deviennent souvent routinières. Leur analyse peut vous aider à déterminer si elles sont utiles ou si elles ne font que remplir votre agenda. Vous voulez des raisons fondées sur des données pour dire "non" à une autre invitation. En vous appuyant sur des chiffres, vous pouvez justifier votre décision de réduire le nombre de réunions et de consacrer plus de temps à vos activités. Ce type d'information peut vous aider à récupérer votre temps, à prendre des décisions plus intelligentes en matière de programmation et à réduire la fatigue liée aux réunions. Maintenant, obtenons ces données. Étape 1 : Exportation de votre calendrier Google Google Agenda ne vous permet pas d'obtenir une feuille Excel contenant toutes vos réunions, mais vous pouvez exporter vos données au format .ics. Comment exporter : Accédez à Google Agenda. Cliquez sur l'icône d'engrenage ⚙️ → Paramètres. Faites défiler l'écran jusqu'à Importer et exporter. Sous "Exporter", cliquez sur Exporter. Vous obtiendrez un fichier ZIP. Décompressez-le pour trouver les fichiers .ics pour chaque calendrier. Veillez à inclure tous les calendriers pertinents (professionnel, personnel, partagé, etc.). Étape 2 : Convertir le fichier .ics dans un format compatible avec SQL Avant toute chose, nous devons transformer ce fichier .ics en quelque chose de plus utile - comme un fichier .csv, qui fonctionne comme une feuille de calcul et est facile à importer dans n'importe quelle base de données SQL. Pour ce faire, nous utiliserons un simple script Python. Si vous n'avez jamais utilisé Python auparavant, ne vous inquiétez pas, il s'agit d'une approche étape par étape. Le script lira le fichier .ics, en extraira chaque événement (comme une réunion ou un rendez-vous) et enregistrera ces détails dans un fichier .csv. Voici ce dont vous avez besoin pour commencer : Python installé sur votre ordinateur (la version 3.x est suffisante). Deux bibliothèques Python : icalendarPython : aide Python à comprendre les fichiers de calendrier. pandasPython : permet de gérer et d'enregistrer des données sous forme de tableaux. Vous pouvez installer ces bibliothèques en ouvrant votre terminal ou votre invite de commande et en exécutant : pip install icalendar pandas Explication d'un script Python Ne vous laissez pas impressionner par la longueur du script ci-dessous - il peut sembler complexe, mais vous n'avez pas besoin de l'écrire vous-même. Il vous suffit de le copier et de le coller dans un fichier et de l'exécuter. Tout est déjà configuré pour faire le travail à votre place. from icalendar import Calendar import pandas as pd # Read the .ics calendar file with open("calendar.ics", encoding="utf-8") as f: cal = Calendar.from_ical(f.read()) # Create a list to store extracted events events = [] # Walk through each event in the calendar for component in cal.walk(): if component.name == "VEVENT": event = { 'summary': str(component.get('summary')), 'start': component.get('dtstart').dt, 'end': component.get('dtend').dt, 'organizer': str(component.get('organizer')), 'attendees': str(component.get('attendee')), } events.append(event) # Convert list to DataFrame and export to CSV df = pd.DataFrame(events) df.to_csv('calendar_events.csv', index=False) Ce script lit votre calendrier, passe en revue chaque événement et extrait des champs tels que le nom de la réunion, les heures de début et de fin, la personne qui l'a organisée et celle qui y a assisté. Il enregistre ensuite le tout dans un fichier CSV, prêt à être importé dans SQL. Ce qu'il faut faire avec ce code : Copiez l'intégralité du script dans un nouveau fichier Python. Vous pouvez le faire dans n'importe quel éditeur de texte - il suffit de l'enregistrer avec une extension .py, par exemple convert_calendar.py. Assurez-vous que votre fichier .ics se trouve dans le même dossier que votre script et qu'il s'appelle calendar.ics. S'il porte un nom différent, mettez à jour le nom du fichier dans la fonction open(). Pour exécuter le script, ouvrez votre terminal (sur Mac ou Linux) ou l'invite de commande (sur Windows). Naviguez jusqu'au dossier dans lequel vous avez enregistré le fichier Python. Tapez ensuite python convert_calendar.py et appuyez sur Entrée. Cela indique à votre ordinateur d'exécuter le script. Si tout est configuré correctement, il traitera le fichier .ics et créera un nouveau fichier appelé calendar_events.csv dans le même dossier. Ce fichier CSV contiendra tous les événements de votre calendrier Google dans un format facile à utiliser dans SQL. Une fois le script exécuté, vous devriez voir apparaître un nouveau fichier appelé calendar_events.csv dans le même dossier. Ce fichier contiendra tous les événements de votre calendrier dans un format de tableau simple, prêt à être utilisé dans SQL. Voici à quoi pourrait ressembler votre fichier CSV : summarystartendorganizer Weekly Sync2024-01-04 10:002024-01-04 10:30alice@company.com 1:1 with Tom2024-01-05 14:002024-01-05 14:45tom@company.com Étape 3 : Importer le fichier CSV dans votre base de données SQL Vous pouvez utiliser n'importe quelle base de données SQL - MySQL, PostgreSQL ou SQLite. Dans cette section, nous allons vous montrer comment le faire en utilisant PostgreSQL, qui est largement utilisé dans les environnements professionnels et parfait pour apprendre les compétences SQL du monde réel. Si vous utilisez Windows et que PostgreSQL n'est pas encore installé, ne vous inquiétez pas. Il vous suffit de vous rendre sur le site officiel de PostgreSQL et de télécharger le programme d'installation. Exécutez le programme d'installation, suivez les étapes et choisissez les paramètres par défaut, à moins que vous n'ayez une raison de les modifier. Veillez également à installer pgAdmin, un outil visuel qui vous aide à gérer votre base de données PostgreSQL sans utiliser la ligne de commande. Une fois installé, vous pourrez ouvrir pgAdmin, vous connecter à votre serveur local et créer votre première base de données en quelques clics. Étape 1 : Configurer votre table PostgreSQL Ouvrez votre terminal ou pgAdmin et connectez-vous à votre base de données PostgreSQL. Créez ensuite une table qui contiendra les données relatives à vos réunions : CREATE TABLE meetings ( id SERIAL PRIMARY KEY, summary TEXT, start TIMESTAMP, "end" TIMESTAMP, organizer TEXT, attendees TEXT ); Ceci créera une table où chaque réunion sera stockée comme une ligne. Le mot-clé SERIAL crée un identifiant auto-incrémentiel, et TIMESTAMP stocke la date et l'heure de début et de fin. Étape 2 : Charger les données du fichier CSV Maintenant que votre table est prête, vous devez importer le fichier CSV que vous avez créé plus tôt (calendar_events.csv). PostgreSQL utilise la commande COPY pour charger les données CSV dans une table. Si vous utilisez pgAdmin, vous pouvez également le faire via l'interface graphique : Cliquez avec le bouton droit de la souris sur la table meetings dans le panneau de gauche sous votre base de données. Choisissez Import/Export dans le menu contextuel. Dans la fenêtre de dialogue, sélectionnez Import comme option. Choisissez votre fichier calendar_events.csv sur votre ordinateur. Dans la liste déroulante Format, sélectionnez csv. Assurez-vous que l'ordre des colonnes de votre fichier CSV correspond à la structure du tableau. Laissez les autres paramètres par défaut ou modifiez le délimiteur si nécessaire. Cliquez sur OK pour importer. Si vous préférez utiliser une commande SQL dans l'outil de requête de pgAdmin, vous pouvez procéder comme suit : COPY meetings(summary, start, "end", organizer) FROM 'C:/full/path/to/calendar_events.csv' DELIMITER ',' CSV HEADER; Veillez à remplacer C:/full/path/to/calendar_events.csv par le chemin réel de votre fichier CSV. Assurez-vous également que PostgreSQL a la permission d'accéder à ce dossier. Cette méthode peut être plus rapide si vous êtes à l'aise pour taper un peu de SQL. Une fois cette étape terminée, les données de votre calendrier seront disponibles dans PostgreSQL. Etape 4 : Analyser vos réunions avec SQL Passons maintenant à la partie la plus amusante. Lançons quelques requêtes SQL pour explorer vos modèles de réunions et répondre à des questions courantes telles que : À combien de réunions ai-je assisté ? Quels jours ont été les plus chargés ? Combien de temps ai-je passé en réunion ? Nombre total de réunions SELECT COUNT(*) AS total_meetings FROM meetings; Cette requête compte simplement le nombre de lignes existant dans la table meetings. Chaque ligne représentant une réunion, le résultat indique le nombre total de réunions auxquelles vous avez participé. Temps total passé en réunion (heures) SELECT ROUND(SUM(EXTRACT(EPOCH FROM ("end" - start)) / 3600.0)::numeric, 2) AS total_hours FROM meetings; Cette requête calcule le temps total passé en réunion en soustrayant l'heure de début de la réunion de l'heure de fin. Dans PostgreSQL, la soustraction de deux horodatages donne la durée en secondes, nous utilisons donc EXTRACT(EPOCH FROM (...)) pour obtenir le nombre de secondes. Nous le divisons ensuite par 3600 pour le convertir en heures. Enfin, ROUND(..., 2) est utilisé pour faciliter la lecture du résultat en le limitant à deux décimales. Durée moyenne des réunions (minutes) SELECT ROUND(AVG(EXTRACT(EPOCH FROM ("end" - start)) / 60.0)::numeric, 1) AS avg_minutes FROM meetings; Cette requête calcule la durée moyenne de toutes vos réunions. Elle soustrait l'heure de début de l'heure de fin de chaque réunion pour obtenir la durée, puis utilise EXTRACT(EPOCH FROM ...) pour convertir cette durée en secondes. En divisant par 60, les secondes sont converties en minutes. Enfin, AVG vous donne la durée moyenne de la réunion, et ROUND(..., 1) facilite la lecture en ne conservant qu'une seule décimale. Réunions par mois SELECT TO_CHAR(start, 'YYYY-MM') AS month, COUNT(*) AS meeting_count FROM meetings GROUP BY month ORDER BY month; Cette requête vous aide à comprendre comment vos réunions ont été réparties sur chaque mois. Elle utilise TO_CHAR(start, 'YYYY-MM') pour transformer la date de chaque réunion en un format année-mois simplifié comme 2024-03, ce qui facilite le regroupement des événements par mois. La fonction COUNT(*) compte le nombre de réunions qui ont eu lieu au cours de chacun de ces mois. Enfin, la fonction ORDER BY month organise les résultats par ordre chronologique afin que vous puissiez voir d'un coup d'œil vos mois les plus chargés. Les 5 jours les plus chargés SELECT date(start) AS day, COUNT(*) AS meetings FROM meetings GROUP BY day ORDER BY meetings DESC LIMIT 5; Ceci montre les cinq jours où vous avez eu le plus de réunions. date(start) extrait uniquement le jour de l'horodatage complet. GROUP BY regroupe les événements par jour, et ORDER BY meetings DESC place les jours les plus chargés en haut de la liste. LIMIT 5 ne montre que les cinq premiers. Étape 5 : Visualiser les données Vous pouvez utiliser Power BI ou Tableau pour les tableaux de bord. Google Sheets pour des graphiques rapides. Python (Matplotlib/Seaborn) pour les cartes thermiques. Essayez de créer une carte thermique hebdomadaire pour repérer les jours surchargés. Divisez vos données par jour de la semaine et par heure, puis appliquez un formatage conditionnel. Cas d'utilisation pour différents rôles Les responsables peuvent utiliser cette analyse pour comprendre comment le temps de leur équipe est réellement utilisé. Si les réunions prennent plus de temps que prévu, ils peuvent commencer à identifier celles qui sont essentielles et celles qui peuvent être réduites ou supprimées. Les développeurs ont souvent du mal à trouver de grandes plages de temps pour se concentrer sur le codage. En exécutant ces requêtes, ils peuvent repérer des schémas de surcharge de réunions et préconiser moins d'interruptions pendant les heures de travail approfondi. Les spécialistes du marketing peuvent évaluer la part du temps qu'ils consacrent aux sessions de planification par rapport au travail d'exécution. Cela peut conduire à une meilleure planification du travail de campagne et à des réunions plus efficaces, ciblées et axées sur les objectifs. Les enseignants et les éducateurs peuvent tirer profit de l'examen de la répartition de leur temps entre les séances de cours récurrentes, les réunions individuelles avec les étudiants et les tâches administratives. Grâce à cette analyse, ils peuvent rechercher un meilleur équilibre et éventuellement réduire l'épuisement professionnel. En option : Automatiser l'ensemble Vous voulez le faire régulièrement ? Pensez à l'une de ces options : Google Calendar API - Il s'agit d'un outil officiel fourni par Google qui vous permet d'accéder par programme aux données de votre calendrier en temps réel. Vous pouvez écrire un script Python qui se connecte à l'API et récupère vos événements chaque semaine ou chaque mois. De cette manière, vous n'avez pas besoin d'exporter manuellement des fichiers .ics. Automatiser avec Python - Une fois que vous avez configuré le script pour récupérer et traiter les données du calendrier, vous pouvez programmer son exécution automatique (par exemple, tous les mois) à l'aide d'outils tels que le planificateur de tâches Windows ou cron sur Mac/Linux. Cela permet de gagner du temps et de conserver des données fraîches. Zapier - Il s'agit d'un outil sans code qui relie différentes applications entre elles. Vous pouvez utiliser Zapier pour copier automatiquement des événements de Google Agenda dans une feuille Google. À partir de là, vous pouvez importer cette feuille dans votre base de données SQL. Cette option est idéale si vous n'êtes pas prêt à écrire du code Python. Cette section a pour but de vous aider à mettre à l'échelle votre processus afin qu'il fonctionne tout seul, avec peu d'efforts après la configuration. Étapes suivantes Vous voulez construire des requêtes plus puissantes ? Apprenez le langage SQL étape par étape avec SQL pour les débutants sur LearnSQL.fr. Dans ce cours pratique, vous apprendrez à écrire de vraies requêtes SQL qui extraient des données significatives d'une base de données. Vous aborderez des sujets essentiels tels que la sélection de colonnes, le filtrage de lignes, le tri des résultats et l'association de plusieurs tables - tout ce dont vous avez besoin pour commencer à analyser des données comme un professionnel. Le cours est structuré en leçons de taille réduite, chacune étant accompagnée d'exercices interactifs pour vous aider à pratiquer tout en apprenant. Vous n'avez besoin d'aucune expérience préalable : tout est expliqué clairement et progressivement. À la fin du cours, vous serez à l'aise avec SQL pour répondre à des questions, résoudre des problèmes et découvrir des informations à partir de n'importe quelle source de données. C'est la base parfaite pour toute personne travaillant avec des données. Et le meilleur ? Vous pouvez l'essayer gratuitement pour voir comment il fonctionne avant de vous engager. Utilisez vos données. Améliorez votre planning. Gagnez du temps ! Tags: Projet SQL analyse des données