Les modèles du guidon prennent en charge un certain nombre de fonctions qui peuvent aider à rendre correctement votre texte. Dans cet article, nous aborderons certaines des fonctions les plus courantes et la manière dont elles peuvent être utilisées dans Workiva.
Note: Bien que chaque fonction soit listée séparément ici, de nombreuses fonctions du guidon peuvent être "empilées" ou utilisées dans une autre fonction.
CHACUN
La fonction EACH est la plus couramment utilisée et est destinée au traitement d'un JSON. La fonction parcourt en boucle un objet ou un tableau JSON ; la syntaxe de la fonction utilise un bloc d'ouverture et un bloc de fermeture. Chaque élément du tableau peut être utilisé dans le bloc de la boucle EACH :
{{#each object }}
{{object element}}
{{/each}} Dans les commandes Render Text Template et Render File Template, l'objet/le tableau JSON à traiter est spécifié dans la section JSON Variables :
Le nom spécifié dans la section Variables JSON de la commande est utilisé dans le bloc d'ouverture CHAQUE du modèle. Pour un tableau JSON simple tel que celui qui suit, chaque clé (Priorité & Propriétaire dans l'exemple ci-dessous) est disponible pour le traitement dans la boucle EACH :
[
{
"Nom du propriétaire" : "Abby Steere",
"Priority" : "Haute"
},
{
"Nom du propriétaire" : "Jeff Hickey",
"Priorité" : "Haute"
},
{
"Nom du propriétaire" : "Ryan Niebruegge",
"Priorité" : "Haute"
},
{
"Nom du propriétaire" : "Ryan Niebruegge",
"Priorité" : "Faible"
},
{
"Nom du propriétaire" : "Abby Steere",
"Priorité" : "Moyenne"
},
{
"Nom du propriétaire" : "Jeff Hickey",
"Priorité" : "Medium"
},
{
"Nom du propriétaire" : "Ryan Niebruegge",
"Priorité" : "Medium"
}
]
Exemple
Propriétaire de la tâche, Priorité de la tâche
{{#each object_items}}
{{Owner}},{{Priority}}
{{/each}}
Résultat rendu
La fonction EACH peut également traiter des objets JSON plus complexes, y compris ceux contenant des tableaux imbriqués.
Exemple d'objet JSON (liste de produits)
{
"products" : [
{
"id" : 1,
"title" : "iPhone 14",
"prix" : 799,
"marque" : "Apple",
"catégorie" : "smartphones",
"images" : [
"/products/1/1.jpg",
"/products/1/2.jpg",
"/products/1/3.jpg",
"/products/1/4.jpg",
"/products/1/thumbnail.jpg"
]
},
{
"id" : 2,
"title" : "iPhone 15",
"prix" : 899,
"marque" : "Apple",
"catégorie" : "smartphones",
"images" : [
"/products/2/1.jpg",
"/products/2/2.jpg",
"/products/2/3.jpg",
"/products/2/thumbnail.jpg"
]
},
{
"id" : 3,
"title" : "S23 Ultra",
"prix" : 1249,
"marque" : "Samsung",
"catégorie" : "smartphones",
"images" : [
"/products/3/1.jpg"
]
},
{
"id" : 4,
"title" : "Pixel 8",
"prix" : 799,
"brand" : "Google",
"catégorie" : "smartphones",
"images" : [
"/products/4/1.jpg",
"/products/4/2.jpg",
"/products/4/thumbnail.jpg"
]
}
]
, "limit":100
, "total":4
, "hasmore":false
} Exemple
Dans ce modèle, nous accédons à un élément de la racine (total) et nous parcourons un tableau (produits) d'éléments :
L'objet JSON a {{response.total}} articles :
{{#each response.products}}
{{title}}
{{/each}} Résultat rendu
UNLESS et @FIRST / @LAST
La fonction UNLESS est le plus souvent combinée avec les opérateurs @FIRST ou @LAST pour contrôler le rendu final.
Par exemple, lors de la création d'une liste délimitée par des virgules des valeurs en cours d'itération, une virgule n'est pas nécessaire après le dernier élément de la liste. En combinant UNLESS et @LAST, on peut facilement générer une liste séparée par une virgule qui ne se termine pas par une virgule.
Exemple
{{#each response.products}}{{title}}{{#unless @last}},{{/unless}}{{/each}} Résultat rendu à l'aide de l'objet Liste de produits
IF / ELSEIF / ELSE et EQUAL
Les fonctions IF, ELSEIF et ELSE permettent d'ajouter de la logique au modèle pour prendre en compte différents scénarios. L'utilisation de IF ne nécessite pas l'utilisation de ELSEIF ou ELSE si les fonctions sont également combinées avec les opérateurs EQUAL.
L'opérateur égal peut être utilisé pour comparer des valeurs textuelles ou numériques. Lors de la comparaison de valeurs textuelles, si l'une des valeurs est explicitement spécifiée et n'est pas extraite d'une variable, elle doit être placée entre guillemets.
Exemple
Dans cet exemple, "brand" dans la fonction IF est extrait de la variable JSON. Lors de l'exécution, la variable est remplacée par la valeur de l'élément de marque de l'objet.
{{brand}},{{#if (equal brand "Apple")}}iOS{{else}}Android{/if}} Résultat rendu à l'aide de l'objet Liste de produits
@KEY / THIS / @INDEX
Les fonctions @KEY et THIS sont utiles pour interagir avec des objets JSON dont le nom de la clé varie ou n'est pas connu.
La fonction @INDEX renvoie la position de l'élément traité lors de chaque opération.
Note: La fonction @INDEX est basée sur le zéro, de sorte que le premier élément de la liste a une valeur d'index de 0, le deuxième un index de 1, et ainsi de suite.
Exemple de corps JSON
Ce corps est la réponse de la commande Get File Properties du connecteur Workiva :
{
"created" : "2023-11-20T21:02:09.000Z",
"id" : "91af3ec18c554d5a81fd4ec4edc3a897",
"metadata": {
"account" : {},
"amount" : {
"numberFormat" : ",."
},
"entity" : {}
},
"name" : "Sample.csv",
"numRecords" : 3,
"originalFileSize" : 72,
"status" : "IMPORTED",
"tableId" : "d1463c30226445819b0dddf57226ccf7",
"tags": {
"WK-Chains-Source" : "https://h.sandbox.wdesk.com/s/wdata/oc/app/workiva-chains/find/executor?chainId=95631\u0026chainExecutorId=4217258"
},
"updated" : "2023-11-20T21:02:18.000Z",
"userId": "V0ZVc2VyHzU1OTQwMTMxODMzMTE4NzI",
"version" : 1
} Exemple
{{#each properties.tags}}
{{@key}},{{{this}}}
{{/each}} Résultat rendu
Combinaison de fonctions
Toutes les fonctions décrites dans cet article peuvent être utilisées en combinaison les unes avec les autres. Les fonctions EACH peuvent être imbriquées dans d'autres fonctions EACH ; les fonctions UNLESS, IF, @KEY, THIS ou @INDEX peuvent être utilisées à l'intérieur d'une fonction EACH pour contrôler conditionnellement le rendu.
Exemple
Plusieurs fonctions sont combinées dans ce modèle pour créer un tableau au format HTML :
- La fonction CHACUN est utilisée pour parcourir les produits en boucle.
- Un @INDEX est utilisé pour récupérer la position du produit dans le tableau.
- Une fonction IF évalue la marque du produit et met en forme le texte de manière conditionnelle.
- Une instruction EACH imbriquée traite les images de chaque produit.
- Une instruction UNLESS ajoute un saut de ligne (
) après chaque lien d'image (à l'exception du dernier de la liste).
| ID de l'article | Produit | Marque | Prix | Images |
|---|---|---|---|---|
| {{@index}} | {{title}} | {{brand}} | {{price}} | {{#each images}}{{this}}{{#unless @last}} {{/unless}}{{/each}} |
Résultat rendu
Le tableau résultant est affiché ci-dessous lorsqu'il est visualisé sur une page web ou dans un courrier électronique compatible HTML :