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.
- La liste des présentateurs et l'ordre de rotation sont définis dans un onglet
Rotationdu 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.
| 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.
| 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.
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
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 loginLe fichier .clasp.json à la racine contient l'ID du projet Apps Script cible.
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.
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/...).
npm run push # équivalent à : clasp push --forceCela 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 localDans 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.
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.
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- 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_URLdirectement dans Project Settings → Script Properties.