Widget Document Template (Publipostage)

Tout chaud, sortie du four :smiley: :

Éditeur de modèles de documents WYSIWYG avec publipostage pour Grist.

Fonctionnalités :
Éditeur riche** (Jodit Editor, licence MIT) avec variables Grist {{nom_colonne}}
Import Word (.docx)** avec préservation des images et de la mise en page (Mammoth.js)
Gestion multi-modèles** nommés, stockés dans les options du widget Grist (persistant, partagé)
Prévisualisation** au format A4/Letter avec découpage visuel des pages
Sauts de page manuels** — marqueur visible dans l’éditeur, invisible dans le PDF
Génération PDF** avec coupures intelligentes par bloc (jsPDF + html2canvas)
Annulation PDF** avec sauvegarde partielle
Interface bilingue** FR/EN
Modèles globaux** — non liés à une table spécifique, réutilisables

Intégrer le widget Document Template dans Grist

1. Ajouter un widget personnalisé

  1. Ouvrez votre document Grist
  2. Cliquez sur « Ajouter nouveau » (bouton vert en haut à gauche)
  3. Choisissez « Ajouter un widget à la page »
  4. Sélectionnez le type « Personnalisée »
  5. Cliquez sur « Ajouter à la page »

2. Configurer l’URL

  1. Dans le panneau de droite, cliquez sur l’onglet « Widget »
  2. Sélectionnez « URL personnalisée »
  3. Collez cette URL :

« Document Template - Mail Merge »

3. Configurer le niveau d’accès

  1. Dans le panneau de droite, sous « Niveau d’accès » , sélectionnez :
  • « Accès complet au document » (nécessaire pour lire les tables et colonnes)

4. Configurer les colonnes visibles

  1. Sous « Colonnes visible » , cochez « Sélectionner tout »
  • Cela permet au widget de voir toutes les colonnes pour les variables {{...}}

5. Utiliser le widget

  1. Choisissez une table dans le sélecteur « 📊 Table source »
  2. Créez votre modèle dans l’éditeur avec les variables {{Nom_colonne}}
  3. Nommez et sauvegardez votre modèle
  4. Prévisualisez dans l’onglet « Prévisualisation »
  5. Générez le PDF dans l’onglet « Générer PDF »

Bon test !

7 « J'aime »

je regarde, c’est vraiment impressionnant ! félicitations et merci pour ce partage, je vois déjà plein d’utilisations possibles.

Bonjour
merci de votre travail
mais j’ai u soucis.
exemple j’ai des colonnes qui possedent des données
admettons des prenoms « Bruno »

quand je met {{Prenom}} le document m’affiche un chiffre et pas le texte Bruno
que dois je faire pour afficher « Bruno »?

si pour une même donnée, je veux afficher plusieurs lignes est ce possible?

exemple à la date du 16/02/26, il y a trois lignes qui correspondent et j’aimerai afficher
les 3 prenoms correspondants
ligne par ligne ou dans un tableau par exemple

merci

Bonjour @bruno1,

Merci pour votre retour !

1. Chiffre au lieu du texte

Si votre colonne Prenom est une référence vers une autre table, utilisez la syntaxe avec le point :

{{Prenom.Prenom}}

2. J’ai ajouté une nouvelle fonctionnalité pour répondre à vos besoins :

Afficher plusieurs lignes (NOUVEAU !)

Vous pouvez maintenant utiliser une boucle pour afficher toutes les lignes correspondant à un critère :arrows_counterclockwise: Boucle (plusieurs lignes) :

{{#each Date=16/02/2026}}

{{Prenom}} {{Nom}} {{Email}}

{{/each}}

ou les lignes sont générées sous forme de tableau automatiquement : :bar_chart: Tableau avec boucle :

image

N’hésitez pas si vous avez d’autres questions.

Merci de votre retour mais il y a encore un dysfonctionnement

si je tape manuellement {{Prenom.Prenom}} il m’affiche « {{Prenom.Prenom}} »
si je clique sur varibla disponible {{Prenom}} impossible de rajouter ".Prenom}} à l’interieur

POUR le tableau en boucle

il m’affiche les numeros des enregistrements et si je met {{Prenom.Prenom}}
il m’affiche « {{Prenom.Prenom}} »

Bonjour @bruno1

Est ce que vous avez une instance Grist publique pour voir votre table qui pose problème ?

ça fonctionne MERCI

y a t il la possibilité d’ecrire le titre du tableau à la verticale?

Ok super.

Pour le titre dans le tableau vous le souhaitez à la verticale ?

en fait pour les elements du tableau il y a la possibilité d ecrire à gauche au milieu et à droite
il faudrait la possibilité d ecrire horizontalement ou verticalement (quand un titre est long et que l’element de reponse est court ca evite d 'avoir une colonne trop large)

une derniere demande
quand on crée le tableau avec boucle
on doit choisir des options
il faudrait tout simplement que cela affiche les éléments suivants un autre choix
par exemple dans mon cas j’ai une vue FJS (by date by DUMZ)
cela affiche les lignes en fonction de la date et DUMZ dans la VUE FJS (et affiche autant de ligne que ça correspond à la date et DUMZ

il serait bien que votre tableau soit tout simplement relié.
on crée le tableau avec boucle avec les {{}} sans option ou ne serait que relié à une VUE (dans mon cas FJS by date by DUMZ)

J’ai rajouté la possibilité de mettre texte vertical fonctionne en cycle :

  1. 1er clic : Texte vertical de bas en haut (↑)
  2. 2ème clic : Texte vertical de haut en bas (↓)
  3. 3ème clic : Retour au texte normal (horizontal)

Cliquez sur la cellule puis sur le bouton « verticaltext » dans la barre d’outils pour changer l’orientation.

et également le tableau lié à la vue ou par filtre :

super travail
merci beaucoup

juste une derniere information, c’est plutot relié le widget à une vue filtrée qu’il faudrait tout simplement
pouvoir choisir quelle vue afficher
du coup on n’aurait pas vraiment besoin de filtre. car si on est plusieurs service sur la même base il faut creer un filtre pour chaque
alors que le relier à une vue déjà filtrée ça simplifie l’affichage

L’API Grist ne fournit pas de méthode pour lister les vues disponibles (grist.docApi.listViews() n’existe pas). Le widget ne peut donc pas afficher un sélecteur de vues directement. Sauf erreur de ma part.

En revanche, quand le widget est configuré avec « Sélectionner par » dans les options Grist (panneau de droite), il reçoit automatiquement les données filtrées de la vue liée. C’est exactement ce que fait l’option « Lié à la vue (toutes les lignes) » que j’ai ajoutée.

Bonjour
cela semble ne pas fonctionner pour lier la vue
en effet

j’ai créée tableau en boucle
table source mon tableau FJS
dans tableau en boucle j’ai choisi Lié à la vue (toutes les lignes)

puis dans grist j’ai choisi données sources j’ai pris FJS BY DATE DUMZ

or cela m’affiche la table complete dans le widget

par contre la vue simple grist configurée avec FJS BY DATE DUMZ affiche bien une vue filtrée

J’ai corrigé le problème de liaison à la vue et ajouté de nouvelles fonctionnalités :

:white_check_mark: Correction du problème signalé

Le tableau « Lié à la vue » utilise maintenant correctement les données filtrées de Grist.

:sparkles: Nouvelle fonctionnalité : Sélecteur de vue filtrée

Vous pouvez maintenant créer un tableau lié à une vue filtrée existante sans avoir besoin de configurer « Sélectionner par » :

  1. Cliquez sur « Tableau avec boucle »
  2. Choisir « Lié à une vue filtrée »
  3. Sélectionnez la vue dans la liste (les vues avec filtres ont :mag:)
  4. Le tableau affichera uniquement les lignes correspondant aux filtres de cette vue

:arrows_counterclockwise: Bouton « Actualiser »

Dans l’onglet Prévisualisation , un bouton « 🔄 Actualiser » permet de recharger les filtres sans rafraîchir la page. Utile quand vous modifiez les filtres d’une vue.

:memo: Résumé des 3 options de tableau :

  • Lié à la vue courante : Utilisez « Sélectionner par » (temps réel)
  • Lié à une vue filtrée : Sélectionnez une vue existante avec ses filtres sauvegardés
  • Avec filtre manuel : Filtrez par colonne/valeur directement

En résumé, on a plus besoin d’avoir toutes les pages de vue avec le widget template sur la même page.

1 « J'aime »

Bonjour,

Effectivement ce widget a un gros gros potentiel ! Merci beaucoup !

J’avais une question, mais elle a été corrigée avec la modification de cet après-midi !

J’espère que cet widget rencontrera un gros succès !

Une question, je ne suis pas certain de comprendre comment faire appel à une variable dans une autre table, par exemple :

J’ai deux tables : Facture et Facture_details
Je souhaite afficher : La variable « Nom » dans la table « Facture » et différentes variables, en boucle, de la table facture_details.
J’arrive à créer la boucle, mais je n’arrive pas à récupérer la variable « Nom », comment puis-je procéder ?

Bonjour Loic,

J’ai ajouté une nouvelle fonctionnalité pour ce cas d’usage qui peut être très utile en effet !

Comment faire :

  1. Sélectionne Facture comme table source
  2. Insère les variables de la facture : {{Nom}} , {{Date}} , etc.
  3. Clique sur « Tableau avec boucle »« Lié à une table externe »
  4. Sélectionne Facture_details et la colonne de référence (ex: Facture_Ref )
  5. Coche les colonnes à afficher (Produit , Quantité , Prix )

Résultat :

Le widget génère un document par facture. Chaque document affiche :

  • Les infos de la facture ({{Nom}} , etc.)
  • Un tableau avec les lignes de Facture_details liées à cette facture

Pour générer les PDF :

  • Un PDF par facture : Utilise « PDF de cet enregistrement »
  • Tous les PDF combinés : Utilise « Générer PDF » → « Tous les enregistrements »
1 « J'aime »

Merci beaucoup.
L’outil gagne effectivement beaucoup avec cette fonctionnalité.

Je me permets de te faire un retour sur des problèmes constatés :

Encore merci !

ça devrait aller mieux :wink:

exemple doc généré en pdf :

Je viens de tester :

  • Dans l’export PDF le gras est enlevé du tableau (mais pas dans la prévisualisation)
  • L’image s’affiche bien dans la prévisualisation, mais pas dans le PDF. Je ne comprends pas si j’ai mal fait qqchose !

Bon en l’état l’outil semble fonctionnel, c’est top !