Gérer les dates et savoir qui a modifié quoi dans Grist
Gérer les dates et savoir qui a modifié quoi dans Grist
Guide complet pour les associations, petites entreprises et services administratifs
Dans tous les projets réels (gestion de membres, suivi de dons, planning d’événements, inscriptions, facturation…), on a besoin de savoir quand une information a été créée ou modifiée, et par qui.
Grist propose des outils simples et puissants pour cela : les colonnes de type Date / DateTime, les formules automatiques de timestamp, et les colonnes spéciales qui enregistrent l’auteur des modifications.
1. Les deux types de colonnes temporelles
| Type | Ce qu’il stocke | Affichage par défaut | Quand l’utiliser |
|---|---|---|---|
| Date | Seulement la date (ex : 2025-04-15) | 15/04/2025 | Anniversaire, date d’échéance, date de facture |
| DateTime | Date + heure + fuseau (ex : 2025-04-15 14:30:00 Europe/Paris) | 15/04/2025 14:30 | Date de réception d’un formulaire, heure d’arrivée d’un bénévole |
Pour créer la colonne :
Ajouter une colonne → Type → Date ou DateTime
Vous pouvez cocher « Inclure l’heure » sur une colonne Date pour la transformer en DateTime.
2. Timezone : attention à bien la régler
Grist travaille toujours en UTC en interne, mais affiche et enregistre dans le fuseau horaire du document.
Pour le régler :
Paramètres du document (roue dentée en haut à droite) → Timezone → choisissez « Europe/Paris » (ou le vôtre).
Si vous laissez « Browser default », chaque utilisateur verra les dates dans son propre fuseau → risque de confusion dans une équipe.
3. Créer automatiquement la date/heure de création
Méthode la plus simple : utiliser un Trigger (déclencheur).
- Ajoutez une colonne DateTime, appelez-la par exemple « Date création »
- Cliquez sur la colonne → Formula → cochez Trigger
Entrez la formule :datetime.now() - Validez
Résultat : à chaque nouvelle ligne ajoutée (manuellement ou via un formulaire), la cellule se remplit automatiquement avec la date et l’heure exacte, et elle ne bouge plus jamais.
4. Date/heure de dernière modification
Même principe :
- Colonne « Dernière modification » → Type DateTime
- Formula → Trigger →
datetime.now()
Cette fois la valeur se met à jour à chaque modification de la ligne (même un simple changement de statut).
5. Savoir qui a créé ou modifié la ligne (traçabilité)
Grist propose 4 colonnes spéciales intégrées :
| Colonne spéciale | Ce qu’elle contient | Comment l’ajouter |
|---|---|---|
$user |
L’adresse e-mail de la personne connectée | Ajouter colonne → Type → User |
$user.Name |
Le nom complet | Type → User.Name |
$user.Access |
Le niveau d’accès (Owner, Editor, Viewer) | Type → |
$user dans une formule |
L’objet utilisateur complet |
Pour enregistrer l’auteur une fois pour toutes :
- Colonne « Créé par » → Type Text ou Choice
Formula → Trigger →$user.Email(ou$user.Namesi vous préférez le nom) - Colonne « Modifié par » → Type Text
Formula → Trigger →$user.Email
L’auteur est ainsi figé au moment de la création ou de chaque modification.
6. Exemple complet d’une table « Adhésions » bien suivie
| Colonne | Type | Formule / Trigger | Résultat |
|---|---|---|---|
| Adhérent | Text | ||
| Date adhésion | Date | Trigger + datetime.now() |
Date du jour automatiquement |
| Heure inscription | DateTime | Trigger + datetime.now() |
Heure précise si formulaire |
| Créé par | Text | Trigger + $user.Email |
qui a rempli le formulaire |
| Statut | Choice | Payé / En attente / Refusé | |
| Dernière modification | DateTime | Trigger + datetime.now() |
Mise à jour à chaque changement |
| Modifié par | Text | Trigger + $user.Email |
Qui a changé le statut |
7. Cas concret : formulaire public d’inscription
Vous partagez un formulaire Grist en lien public (widget Form).
Même si la personne n’est pas connectée à Grist :
- Les colonnes DateTime avec trigger
datetime.now()fonctionnent parfaitement - Les colonnes
$user.*affichent AnonymousUser → c’est normal et attendu
Si vous avez besoin de connaître le nom, ajoutez simplement un champ texte « Votre nom » dans le formulaire.
8. Bonnes pratiques que j’utilise tous les jours
- Toujours régler le timezone du document dès la création
- Mettre les colonnes de suivi (création/modification) en vert ou gris clair pour les repérer facilement
- Ne jamais modifier manuellement une colonne avec trigger (elle serait écrasée à la prochaine modification)
- Si vous avez besoin de la date du jour sans heure → utilisez
today()au lieu dedatetime.now()
9. Résumé rapide des formules utiles
| Besoin | Formule |
|---|---|
| Date du jour (sans heure) | today() |
| Date et heure actuelles | datetime.now() |
| Date + 30 jours | datetime.now() + timedelta(days=30) |
| Extraire l’année | $date.year |
| Formater une date en texte | $date.strftime("%d/%m/%Y") |
Avec ces quelques colonnes et triggers, vous avez immédiatement une traçabilité complète, sans aucune macro ni script compliqué. C’est exactement ce qui fait gagner un temps fou aux associations et petites structures : tout est clair, tout est automatique, et tout est auditable en un coup d’œil.
Vous avez une question sur la mise en place dans votre cas précis ? Dites-moi en commentaire ce que vous cherchez à suivre (adhésions, événements, dons, bénévoles…) et je vous donne la structure exacte.