Skip links

Grist : quand un tableur devient une application métier

Un tableur pour stocker des données, jusque-là rien de très surprenant.

Mais un tableur capable d’authentifier des utilisateurs, d’afficher des documents, de proposer une interface de notation sur mesure, de croiser automatiquement plusieurs évaluations et d’alimenter un site web ? C’est déjà un peu moins commun et c’est pour ça que ça nous intéresse !

De prime abord, Grist ressemble à un tableur collaboratif. Mais derrière cette interface familière se trouve un outil open source particulièrement flexible, qui a l’avantage de pouvoir être déployé et maîtrisé dans un environnement souverain. Son modèle relationnel, son système de permissions, la gestion des pièces jointes, ses formules Python et surtout ses modules personnalisés, permettent de dépasser largement les usages classiques d’un tableur pour en faire le socle d’une véritable application métier.

Grist et La Suite numérique

Grist fait partie des outils développés et soutenus dans le cadre de La Suite numérique, l’écosystème de services numériques collaboratifs porté par l’État, notamment par la DINUM et l’ANCT. L’objectif est de proposer aux agents publics et à leurs partenaires des outils ouverts, interopérables et maîtrisés, constituant des alternatives crédibles aux grandes plateformes propriétaires.

Notre usage de Grist s’inscrit donc également dans une logique de souveraineté numérique : privilégier des briques open source,dont les conditions d’hébergement, les données et les évolutions peuvent rester maîtrisées.

Cette combinaison entre ouverture, maîtrise des données et capacité de personnalisation, en fait une alternative particulièrement intéressante aux solutions SaaS propriétaires. Grist permet de construire rapidement des outils adaptés à des besoins spécifiques, tout en conservant la maîtrise de leur hébergement, de leur évolution et des données qu’ils contiennent.

C’est précisément l’usage que nous en faisons dans plusieurs de nos projets. Partir d’un besoin métier, structurer les données dans Grist, puis construire autour d’elles les interfaces et les automatisations nécessaires. Nous pouvons ainsi concentrer nos efforts de développement sur ce qui apporte réellement de la valeur aux utilisateurs, tout en nous appuyant sur une infrastructure relativement légère, sécurisée et maîtrisable.

Revenons ensemble sur le potentiel offert pas Grist à travers deux cas d’usage !

Le point de départ : faire travailler plusieurs personnes autour des mêmes données

Premier cas d’usage : un dispositif de notation de formations pour la Délégation interministérielle à la stratégie nationale pour les troubles du neurodéveloppement (DITND). Dans le cadre de la construction de la plateforme nationale dédiée à l’autisme et aux troubles associés, une commission était chargée d’évaluer la qualité des contenus de formations déposés par différents organismes au regard des Repères nationaux.

Dans l’idée, le processus est simple : plusieurs experts examinent de façon asynchrone les formations, consultent les documents associés, et les évaluent sur la base d’une trentaine de critères. Chacun de ces experts doit pouvoir donner son avis (critère atteint, partiellement atteint, non atteint…) et apporter des commentaires. L’ensemble des ces interactions doit pouvoir être tracé. Il faut ensuite croiser les différentes évaluations, repérer les désaccords pour permettre à la commission d’aboutir à une décision.

En pratique, cela représente beaucoup de données à croiser, beaucoup d’interactions et une multiplication des fichiers et des ressaisies. Il fallait aussi garantir la sincérité de l’évaluation en s’assurant que chaque expert ne voit que ses notes et éviter tout biais de jugement.

💡Plus qu’un tableur en ligne, un tableur souverain ?

Pour comprendre notre choix, revenons sur ce qu’est Grist. Au premier regard, il ressemble à un tableur collaboratif. Mais cette interface familière cache un fonctionnement plus proche de celui d’une base de données.

Les colonnes sont typées, les tables peuvent être liées entre elles par des références et les formules sont écrites en Python. Grist permet aussi de gérer les pièces jointes ainsi que les droits d’accès des utilisateurs pour chaque table et selon des groupes personnalisables.

À ce stade, Grist joue déjà le rôle d’une petite base de données relationnelle. Mais stocker correctement l’information ne réglait qu’une partie du problème. Hors de question pour les utilisateurs de travailler directement dans les tables : il faut leur proposer une interface adaptée. C’est là que les modules personnalisés entrent en jeu.

Bien plus joli qu’un tableur, une interface user friendly

Grâce aux modules personnalisés – ou custom widgets – de Grist, nous avons développé une interface dédiée aux validateurs, directement connectée aux données de la base.

💡Qu’est-ce qu’un widget ?

Un widget est une petite application web connectée directement au document. Elle peut lire ses tables, afficher les données autrement que sous la forme de lignes et de colonnes et, si nécessaire, écrire de nouvelles informations dans Grist.

Chaque membre de la commission est authentifié via son compte Grist. Dès lors, il retrouve les formations qui lui sont attribuées, et peut consulter les documents associés, parcourir les différents critères, sélectionner son avis et ajouter ses commentaires. Les réponses sont enregistrées directement dans les tables, sans étape intermédiaire ni ressaisie.

L’évaluateur n’a donc pas besoin de manipuler directement les tables situées derrière l’application. Il utilise une interface conçue spécifiquement pour son besoin, tandis que Grist continue d’assurer le stockage et la structuration des données en arrière-plan.

Le même principe est utilisé quand la commission se réunit grâce à une seconde interface. Elle agrège les évaluations, affiche les avis côte à côte et permet de repérer immédiatement les critères faisant consensus ou, au contraire, ceux sur lesquels les évaluateurs divergent.

Le résultat ne ressemble donc plus vraiment à un tableur. Pour les utilisateurs , il s’agit d’une application métier dédiée à l’évaluation d’une formation de bout en bout. En arrière-plan, Grist reste le moteur qui stocke les données, gère les accès et assure leur cohérence.

💡Un workflow complet dans un seul environnement

La formation et ses documents sont d’abord déposés grâce à un formulaire. Les validateurs l’évaluent ensuite depuis leur interface. Les résultats alimentent directement les tables Grist. Les réponses sont consolidées par l’interface de commission, puis un export au format JSON est généré pour alimenter le site public.

On obtient donc une chaîne complète : dépôt → évaluation → consolidation → décision → export → publication. Avec un avantage important : les différentes étapes travaillent toujours à partir des mêmes données. Ce qui nous intéresse ici n’est pas seulement l’automatisation de quelques tâches. C’est la capacité à faire circuler les données dans tout le workflow sans avoir à construire et maintenir une succession de bases, d’exports et d’interfaces intermédiaires.

Grist fournit le socle, tandis que le développement sur mesure porte sur l’expérience et les règles métier. Le principe est simple : le module s’annonce d’abord auprès de Grist et précise les droits dont il a besoin. Les modules personnalisés communiquent directement avec Grist via sa son API dédiée (grist-plugin-api). Ils peuvent ensuite lire les données d’une table puis créer ou modifier des enregistrements lorsque l’utilisateur agit dans l’interface.

Grist, un socle flexible pour prototyper

Grist permet de prototyper très rapidement une interface ou un workflow, mais tous les besoins n’ont pas vocation à rester entièrement dans l’outil.

Pour les applications qui doivent durer, nous pouvons par exemple héberger les modules personnalisés comme des applications web indépendantes, afin de retrouver les pratiques classiques du développement logiciel : versionnement, gestion des dépendances et déploiement maîtrisé.

La même logique vaut pour la structuration des données. Dans notre cas d’usage, stocker chaque critère d’évaluation sur une ligne aurait généré plusieurs milliers d’enregistrements. Nous avons donc choisi de regrouper les réponses d’une évaluation dans une donnée structurée au format JSON, interprétée par le module personnalisé. Nous choisissons la structure la plus adaptée au volume, aux usages et aux contraintes du projet plutôt que de complexifier l’infrastructure par défaut.

L’enjeu n’est donc pas de tout faire dans Grist, mais de l’utiliser comme un socle flexible, en adaptant l’architecture et le stockage aux contraintes réelles du projet.

Une même architecture pour des besoins très différents

Cette approche modulaire ne se limite pas aux outils de notation. Nous l’avons également utilisée dans le cadre de l’accompagnement du gouvernement grec dans le cadre de l’Open Data Maturity Assessment.

Cette fois, le point de départ était très différent : un fichier Excel de la Commission européenne particulièrement complexe à manipuler. Il contient les réponses de plusieurs pays européens, dont la Grèce et la France, quant à leur degré de maturité en termes d’Open Data.

Aperçu de l'Excel d'évaluation
Aperçu de l'application Grist pour la Grèce

Nous l’avons transformé en un véritable espace de travail collaboratif permettant de présenter chaque question de manière lisible, de rétablir les correspondances entre les questionnaires 2025 et 2026, et d’afficher les réponses grecques et françaises côte à côte afin de faciliter leur comparaison et leur complétion. Les sources restent tracées et plusieurs personnes peuvent travailler ensemble sur le même support.

Le cas d’usage change, mais le principe reste le même : des données structurées dans Grist, sur lesquelles nous construisons une interface adaptée au travail réel des utilisateurs.

Pourquoi cette approche nous intéresse : automatiser sans nécessairement construire une usine

Ces projets illustrent finalement une autre manière d’aborder l’automatisation. Développer une application métier sur mesure implique habituellement de mettre en place plusieurs briques dès le départ : une base de données, une authentification, une gestion des permissions, du stockage documentaire, une interface d’administration, parfois une API.

Grist prend déjà en charge une bonne partie de ce socle. Nous pouvons alors concentrer le temps de conception et de développement sur ce qui différencie réellement l’outil : les workflows, les règles métier, l’ergonomie ou les interfaces spécialisées. Grist apporte de son côté l’authentification, le stockage, les données structurées et l’accès depuis un simple navigateur. Il permet également de conserver un historique des actions et des sauvegardes automatiques fiables et régulières.

C’est probablement là que réside le principal intérêt de l’outil pour nous. Il permet de tester rapidement un fonctionnement, de l’adapter aux retours des utilisateurs et, lorsque le besoin le justifie, de faire progressivement évoluer le tableur vers une véritable application métier.

Et c’est là que se situe notre savoir-faire : identifier les cas où cette architecture est pertinente, modéliser les données, construire les interfaces métier nécessaires et connecter l’ensemble aux autres composants du système d’information. Autrement dit, ne pas simplement « faire un Grist », mais concevoir une application métier légère autour de Grist, lorsqu’il s’agit du bon outil pour le problème à résoudre.