Skip to content

HelloPrimary/utils-weekly-presenter

Repository files navigation

Weekly Presenter — Round Robin automatique

Script Google Apps Script qui annonce chaque jeudi à 11h45 sur Slack qui présente au weekly du vendredi matin, en suivant une rotation définie dans un Google Sheet.

Fonctionnement

  • La liste des présentateurs et l'ordre de rotation sont définis dans un onglet Rotation du Google Sheet.
  • L'historique des présentations passées (date + présentateur) est consigné dans un onglet Historique.
  • Chaque jeudi à 11h45, le script calcule qui vient ensuite dans la rotation et envoie un message Slack formaté.
  • En cas d'absence, le menu Weekly → Passer au suivant dans le Google Sheet déclenche une nouvelle annonce pour la personne suivante.

Structure du Google Sheet

Onglet Rotation

Nom Handle Slack
Alice alice.dupont
Bob bob.martin
Camille

Ligne 1 = en-têtes. Une personne par ligne, dans l'ordre souhaité. La colonne Handle Slack est optionnelle — si renseignée, le message Slack affichera une mention @ ; sinon le nom apparaît en gras.

Onglet Historique

Date Présentateur
2025-01-10 Alice
2025-01-17 Bob
2025-01-24 Camille

Ligne 1 = en-têtes. Rempli automatiquement par le script après chaque annonce.

Un exemple est disponible dans rotation.csv.

Structure du projet

utils-weekly-presenter/
├── setup.gs              # Bootstrap : crée les entrées de config (une seule fois)
├── weekly_presenter.gs   # Script principal (logique métier)
├── package.json          # Scripts NPM pour le déploiement via clasp
└── rotation.csv          # Exemple onglet Rotation

Déploiement

Prérequis

Ce projet utilise clasp pour déployer les scripts depuis la ligne de commande. Assure-toi d'avoir Node.js installé, puis :

npm install -g @google/clasp
npm login        # ou : npm run login

Le fichier .clasp.json à la racine contient l'ID du projet Apps Script cible.

1. Préparer le Google Sheet

Crée un Google Sheet avec les deux onglets Rotation et Historique tels que décrits ci-dessus. Note l'ID du sheet dans l'URL : https://docs.google.com/spreadsheets/d/**SHEET_ID**/edit.

2. Créer le webhook Slack

Dans Slack : Settings & administration → Manage apps → Incoming Webhooks → Add to Slack. Sélectionne le canal cible et copie l'URL générée (https://hooks.slack.com/services/...).

3. Déployer les scripts

npm run push     # équivalent à : clasp push --force

Cela envoie les fichiers .gs locaux vers le projet Apps Script défini dans .clasp.json.

Pour vérifier le contenu déployé ou ouvrir l'éditeur :

npm run open     # ouvre le projet dans l'éditeur Apps Script
npm run pull     # rapatrie les fichiers depuis Apps Script vers le dépôt local

4. Initialiser la configuration

Dans l'éditeur Apps Script, sélectionne initialiserConfig dans le menu déroulant et clique Exécuter. Cela crée les entrées SHEET_ID et WEBHOOK_URL dans les Script Properties.

Renseigne ensuite les vraies valeurs dans Project Settings → Script Properties.

5. Activer le trigger

Sélectionne creerTrigger et clique Exécuter. Autorise les permissions demandées. Le trigger tourne ensuite seul chaque jeudi.

Apps Script ne permet pas la précision à la minute sur les triggers hebdomadaires. Le script utilise un trigger quotidien à 11h45 avec vérification du jour (jeudi). En pratique, le message part entre 11h45 et 12h15.

6. Tester

Sélectionne testerSansEnvoyer et clique Exécuter — le message prévu s'affiche dans les logs sans rien envoyer sur Slack.

Pour un test d'envoi réel, utilise envoyerAnnonceWeekly directement.

Pour consulter les logs depuis le terminal :

npm run logs     # équivalent à : clasp logs

Maintenance

  • Ajouter / retirer quelqu'un : modifie simplement l'onglet Rotation. L'ordre est respecté à partir de l'entrée suivante dans l'historique.
  • Corriger un oubli : ajoute ou corrige une ligne dans Historique — le calcul se base toujours sur la dernière entrée.
  • Changer le canal Slack : mets à jour WEBHOOK_URL directement dans Project Settings → Script Properties.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors