Déclic — Absences Outlook 2.0
Ce que cette version fait
Sur Windows, lit le calendrier principal Microsoft 365/Exchange Online du compte choisi. Reconnaît les titres commençant par « Absence » ou la catégorie « Absence » (sans distinction de majuscules). Programme une période dans les réponses automatiques Microsoft, pour quelques heures, une journée ou plusieurs jours. Outlook installé n'est pas nécessaire pour ce programme Graph.
En mode surveillance, relit l'agenda toutes les cinq minutes, prend en compte les modifications et annulations et programme la prochaine période disponible. Les absences contiguës ou superposées sont fusionnées. Une seule période peut être enregistrée chez Microsoft à un instant donné. Recherche sur les 366 prochains jours, avec toutes les pages d'événements et les occurrences des récurrences retournées par Microsoft.
PC éteint : la période déjà enregistrée continue côté Microsoft. La détection de nouveaux événements, des modifications et annulations est suspendue. Elle reprend au prochain lancement du programme. Le PC doit être connecté, éveillé et le programme en cours pour surveiller. Aucun hébergement cloud de la surveillance n'est fourni. Ne pas lancer plusieurs surveillances simultanément pour une même boîte.
Version vérifiée par tests simulés, PAS encore validée sur une vraie boîte. Compte compatible et politiques de l'organisation à vérifier avant livraison commerciale. Un compte Exchange local seul n'est pas pris en charge par cette offre Graph. Pas de tri, transfert ou lecture du contenu des mails.
1. Installation initiale assistée
Installer Python 3.11 ou ultérieur depuis python.org (avec la commande python disponible), puis dans ce dossier :
python -m pip install -r requirements.txt
Entra : enregistrer une application de type client public, autoriser les flux client public pour le code d'appareil. Choisir les types de comptes et l'annuaire selon le client ; l'usage multilocataire n'élimine pas les restrictions ou consentements administrateur chez les clients. Autorisations Graph DÉLÉGUÉES : Calendars.Read et MailboxSettings.ReadWrite. Aucun secret client ne doit être créé ou inclus dans le pack.
Reporter l'ID d'application dans configuration.json. tenant peut être l'ID de l'annuaire client, ou organizations pour une application compatible multilocataire. Faire valider les droits par le service informatique si nécessaire. Ne jamais contourner sa politique de consentement ou d'accès conditionnel.
Les réponses externes sont limitées par défaut aux contacts (contactsOnly). Choisir none pour aucune réponse externe ou all pour tous les expéditeurs externes, en connaissance de cause. Le programme remplace le texte interne et externe par son modèle. Un champ message facultatif dans configuration.json personnalise ce modèle avec {debut} et {fin}.
2. Connexion et essai
Remplacer adresse@entreprise.fr par VOTRE compte dans toutes les commandes :
python absences_outlook.py --connexion --compte adresse@entreprise.fr
python absences_outlook.py --apercu --compte adresse@entreprise.fr
La connexion demande une authentification Microsoft et ses consentements. Le cache est chiffré par Windows dans %LOCALAPPDATA%\DeclicAbsences. --apercu lit le calendrier et les réglages mais ne les modifie pas ; il ne vérifie pas qu'une écriture réelle sera autorisée. L'installation ou la connexion écrivent des fichiers locaux.
Créer une absence d'essai courte avec des données fictives. Contrôler les horaires affichés, puis effectuer une synchronisation volontaire :
python absences_outlook.py --compte adresse@entreprise.fr
Vérifier les réponses automatiques dans Outlook sur le web, leur début, leur fin, les audiences et le message. Fermer le programme puis tester sur une boîte d'essai pendant la période. Tester aussi une modification et une annulation, en relançant la synchronisation. Pour une journée entière, la fin exclusive de l'événement apparaît à minuit du lendemain : c'est attendu.
3. Surveillance
python absences_outlook.py --surveiller --compte adresse@entreprise.fr
Laisser la fenêtre ouverte (réductible). Ctrl+C arrête la surveillance sans effacer le réglage chez Microsoft. Une erreur réseau ou de droits n'est jamais interprétée comme une suppression d'absence ; le programme attend la prochaine tentative et affiche l'erreur. Si Microsoft exige une nouvelle authentification, relancer --connexion. La politique du compte peut imposer des connexions régulières malgré le cache.
Pour démarrer à l'ouverture de session : créer un raccourci vers python.exe avec les arguments ci-dessus et le chemin COMPLET du fichier absences_outlook.py entre guillemets. Tester ce raccourci, puis le placer dans le dossier Windows ouvert par Win+R → shell:startup. Retirer ce raccourci pour annuler. Cela ne fonctionne que pendant une session Windows active ; la veille et l'arrêt interrompent la surveillance.
4. Protection des réglages manuels
Un réglage actif préexistant, ou modifié manuellement depuis la dernière synchronisation, est conservé. Le programme s'arrête ou signale le conflit en surveillance. Après avoir vérifié le contenu, une exécution ponctuelle avec --reprendre autorise son remplacement :
python absences_outlook.py --reprendre --compte adresse@entreprise.fr
Attention : relancer --reprendre est une décision explicite de remplacer le réglage existant. La surveillance n'accepte pas cette option. Le cache d'état sert à reconnaître les réglages gérés par Déclic ; s'il est perdu, un réglage actif est conservé par prudence.
Pour arrêter plus tôt : modifier/supprimer l'événement puis attendre la surveillance, ou arrêter la surveillance et lancer :
python absences_outlook.py --desactiver --compte adresse@entreprise.fr
Cette commande désactive seulement un réglage reconnu comme géré par Déclic. Si l'événement existe encore, la surveillance le reprogrammera : modifier le calendrier aussi. Un changement de réglage manuel interrompt la gestion automatique jusqu'à résolution.
5. Recette avant livraison
Vérifier avec le client : authentification/droits ; quelques heures ; journée entière ; plusieurs jours ; changement d'heure Paris ; agenda chargé ; absence récurrente ; chevauchement ; modification ; suppression ; passage à la période suivante ; conflit avec réglage manuel ; panne réseau ; redémarrage et PC éteint. Valider sur un compte d'essai avant utilisation courante. Les tests hors ligne du pack ne remplacent pas cette recette.
6. Retrait
Arrêter la surveillance, retirer le raccourci éventuel, désactiver si nécessaire les réponses dans Outlook sur le web. Révoquer l'accès de l'application dans le compte Microsoft ou auprès de l'administrateur. Supprimer le dossier local du programme et %LOCALAPPDATA%\DeclicAbsences si souhaité (cache chiffré et état). Ces fichiers ne doivent jamais être transmis au vendeur ou ajoutés à un ZIP de livraison.