Documentation en ligne

Source de données depuis un fichier tableur (CSV ou ODS)

Dans un formulaire il est fréquent d'avoir besoin d'une liste d'éléments provenant d'un référentiel simple et statique, tel que la liste de quartiers d'une ville.

Si ce référentiel est disponible sous la forme d'un tableau de valeur CSV (typiquement exporté depuis un fichier tableur), alors il est possible de le rendre disponible facilement dans Publik pour l'utiliser comme source de données pour les élements de type liste.

Cela se fait en plusieurs étapes :

  1. préparation d'un fichier CSV
  2. création d'un connecteur qui va diffuser le contenu du fichier CSV  sous la forme d'une ressource Web;
  3. ajout d'une source de données dans la fabrique de formulaires, afin de rendre les élements de ce connecteur utilisable dans tous les formulaires.

Préparation du fichier CSV

Préparer un fichier CSV, par exemple par export depuis un tableur. L'utilisation de LibreOffice Calc est conseillée, son module d'export/import de fichiers CSV étant particulièrement efficace.

Le fichier CSV doit avoir au moins deux colonnes : une première colonne contenant un «id», identifiant de chaque élément (valeur numérique, code, … à votre choix), et une seconde contenant les «text» c'est-à-dire les intitulés de chaque élément. Des colonnes supplémentaires sont possibles et si vous souhaitez gérer des éléments désactivés, vous devez prévoir une colonne "disabled" qui sera vide pour les éléments à afficher et complétée d'une valeur, quelconque, pour les éléments désactivés.

Exemple d'un fichier CSV où chaque arrondissement est représenté par son numéro :

identifiant,arrondissement
1,1er arrondissement
2,2nd arrondissement
3,3ème arrondissement

Autre exemple où chaque quartier de la ville est représenté par un code :

identifiant,nom
CENTRE,Centre ville
BRASSENS,Quartier Georges Brassens
HUGO,Quartier Victor Hugo

Attention, les fichiers doivent être encodés en UTF-8.

Création d'un connecteur CSV

Pour transformer ce fichier en connecteur :

  1. se rendre dans le menu «Services web»
  2. cliquer sur «Ajouter un connecteur» (en haut à droite)
  3. dans la ligne «Sources des données», cliquer sur «Fichier tableur»
  4. compléter les champs nécessaires :
    1. Titre : donner un nom à votre source de données.
    2. Description : rappeler son objectif.
    3. Niveau de log : n'a pas grande importance pour un fichier csv, peut être laissé à NOTSET
    4. Fichier CSV : envoyer ici votre fichier CSV (ou ODT, ou XLS;-).
    5. Noms des clés pour les colonnes : ici Il faut donner un nom (sans accents ni espace) pour chaque colonne du fichier. Les noms sont separés par des virgules. Il faut impératement que deux noms id et text correspondant à deux des colonnes (peu importe l'ordre). On pourra donc avoir par exemple id, text, adresse.
    6. Passer la première ligne : si la première ligne de votre fichier contient le nom des colonnes (comme dans les exemples ci-dessus) alors il faut cocher cette case pour que la première ligne ne soit pas considérée comme faisant partie des données.
    7. Nom de la feuille : à renseigner quand fichier tableur pour pointer vers la bonne page et donc, par exemple : «Feuil1».
  5. Puis cliquer sur «Enregistrer».

La page de présentation du connecteur s'affiche alors, indiquant les Points d'accès du connecteur (ce qu'on appelle aussi les endpoints de l'API, c'est-à-dire les adresses par lesquelles les données sont accessibles.)

Il faut alors régler la sécurité du connecteur, car par défaut celui-ci est inaccessible. Pour cela, en dessous du tableau «Sécurité», cliquer sur «Ajouter» et ajouter l'utilisateur Passerelle de votre choix. En général un utilisateur «Public» est disponible qui autorise un accès public au connecteur.

Votre connecteur CSV est maintenant créé. Vous devez noter son adresse, qui doit être du type :

  • {{passerelle_url}}csvdatasource/nom-de-la-source/

Le point d'accès aux données est le suivant :

  • {{passerelle_url}}csvdatasource/nom-de-la-source/data
Si vous obtenez une erreur 403 en essayant d'accéder à votre connecteur c'est certainement parce que vous n'avez pas l'autorisation d'accéder à l'API. Cette autorisation se règle sur la partie inférieure de l'écran d'accueil : « Sécurité » et sur l'url {{passerelle_url}}manage/access/

Création de la source de données associée

Se rendre dans la fabrique de formulaires et utiliser le lien «Sources de données» dans la colonne droite.

Cliquer alors sur «Nouvelle source de données», toujours dans la colonne droite.

  • Indiquer un nom et une description, généralement les mêmes que ceux choisis lors de la configuration du connecteur CSV.
  • Au niveau de «Source de données», choisir le type «URL du JSON».
  • Indiquer ensuite l'URL du point d'accès aux données, voir ci-dessus. Il s'agit de l'adresse URL du connecteur suivie de /data.

Votre référentiel est maintenant disponible via le paramètre avancé «Source de données» dans les champs de type liste des formulaires.

Il est possible d'éditer l'URL pour modifier le comportement de la source de données, par exemple rendre la recherche insensible à la casse : {{passerelle_url}}csvdatasource/nom-de-la-source/data?case-insensitive
Si un champ liste (identifiant « liste ») est lié à une source de donnée json faite à partir d'un CSV comprenant les attributs (colonnes) « nom » et « prenom », on récupèrera ces attributs dans les variables {{form_var_liste_nom}} et {{form_var_liste_prenom}}.

Il est possible de construire des requêtes pour aller plus loin dans l'utilisation des données contenues dans un fichier CSV ou ODS.

Dernière mise à jour le 15 décembre 2017 09:38