Centre d'assistance

Langage de script d’une enquête (“CSL”)

Pas de commentaire

CheckMarket offre un langage de script très puissant pour améliorer vos rapports, appelé le CheckMarket Scripting Language ou CSL.

À son niveau le plus élémentaire, le CSL est facile à utiliser. Vous pouvez l’utiliser pour ajouter des variables à vos enquêtes et rapports en les sélectionnant d’un menu déroulant.

À son niveau le plus avancé, notre langage de script vous donne une énorme liberté pour utiliser une logique complexe en vue de faire des calculs, de montrer ou de cacher certains blocs de texte ou d’images et beaucoup plus. Alors, mettez votre casquette de mathématicien et allons au fond des choses …

Concepts de base

Syntaxe

Les variables dans le langage de script sont entourées de doubles accolades, comme ceci : {{nomDuVariable}}. Elles sont insensibles à la casse, alors {{NomDuVariable}} est identique à {{nomDuVariable}}.

Hiérarchie

Les variables sont hiérarchiques, vous pouvez donc les parcourir en utilisant la notation par points. Voici quelques exemples :

  • Titre du rapport : {{report.title}}
  • Titre du filtre du rapport : {{report.filter.title}}
  • Titre du premier élément du rapport : {{report.elements.1.title}}
  • Titre de l’élément avec ID 123: {{report.elements.id-123.title}}
  • Etiquette de la première option de réponse de la question de la première source de données du premier élément de rapport : {{report.elements.1.data.1.question.answeroptions.1.label}}

Variables

Où pouvez-vous trouver les variables disponibles ?

 

  • Variables du rapport : dans le ReportBuilder, vous pouvez trouver ces variables dans l’éditeur de texte, en utilisant le bouton d’expansion expand icon dans le volet des propriétés sous ‘Commentaire’ à droite. Ici vous trouverez le menu ‘Variables’ :

Opérateurs avancés

Le langage de script soutient plus que juste des variables. En utilisant des opérateurs spéciaux, vous pouvez implémenter votre propre logique. Pour vous donner une idée, voice un exemple :

{{#if (eq element.title 'Tableau croisé')}}
  Le titre de cet élément est Tableau croisé.
{{/if}}

Dans l’exemple ci-dessus, nous vérifions si le titre de l’élément est égal à “Tableau croisé”. Si tel est le cas, nous affichons ‘Le titre de cet élément est Tableau croisé’. Si ce n’est pas le cas, rien ne sera affiché.

Liste des opérateurs

Vous pouvez utiliser des opérateurs de bloc pour montrer / cacher du contenu en fonction de votre propre logique.

OpérateurDescription
ifUtilisez l’opérateur if (si) pour montrer du contenu, de manière conditionnelle. Si son argument renvoie false, null, ”, 0 ou [], le contenu ne sera pas visible.
{{#if (and title description)}}
  Ce texte sera seulement visible s'il y a un titre ET une description.
{{/if}}
if + elseSpécifiez le contenu else (autrement) à être affiché si la première condition n’est pas remplie.
{{#if contact}}
  <h1>{{contact.firstName}} {{contact.lastName}}</h1>
{{else}}
  <h1>Répondant inconnu</h1>
{{/if}}
else ifCombinez plusieurs blocs #if en utilisant else if (sinon). Le système évaluera chaque ‘if’ l’une après l’autre (par ordre d’apparence), jusqu’à ce qu’il en trouve une qui est vrai ou jusqu’à ce qu’il atteigne le ‘else’. Une fois que l’un des blocs ‘if’ est vrai, les autres seront ignorés,même s’ils sont également vrais.
{{#if contact}}
  <h1>{{contact.firstName}} {{contact.lastName}}</h1>
{{else if respondent.questions.yourName}}
  <h1>{{respondent.questions.yourName}}</h1>
{{else}}
  <h1>Répondant inconnu</h1>
{{/if}}
unlessUtilisez l’opérateur unless (sauf si) comme l’inverse de l’opérateur if. Son contenu sera affiché si la condition n’est pas remplie (si la valeur est false, null, ”, 0 ou []).
{{#unless response}}
  <h3 class="warning">Attention : Il n'y a pas de réponse !</h3>
{{/unless}}
eachParcourez une liste en utilisant l’opérateur intégré each (chaque). Dans le contenu, vous pouvez utiliser this (ceci) pour référer à l’élément parcouru, ou pour utiliser immédiatement des propriétés sous-jacentes.
<ul>
  {{#each report.elements}}
    <li>{{title}}</li>
  {{/each}}
</ul>
each + elseAvec un opérateur each (chaque), vous pouvez optionnellement fournir une section else (autrement) qui sera affichée seulement si la liste est vide.
{{#each report.elements}}
  <h2>{{title}}</h2>
{{else}}
  <p>Pas d'éléments dans cette liste !</p>
{{/each}}

En utilisant des opérateurs logiques vous pouvez vérifier et comparer des variables. Ces opérateurs sont utilisés le plus souvent endéans des opérateurs de bloc comme #if.

Des opérateurs logiques sont mis entre parenthèses, comme ça : (eq element.title ‘Tabeau croisé’). Le premier mot est l’opérateur, qui est suivi par les arguments. Les arguments peuvent être des variables, du texte brut ou des nombres. Le texte doit être mis entre des guillemets simples.

OperatorDescription
andUtilisez and (et) si tous les arguments doivent être vrai.
{{#if (and author publisher)}}
  Ce texte est seulement visible s'il y a un auteur ET un éditeur.
{{/if}}
orUtilisez or (ou) si l’un des arguments doit être vrai.
{{#if (or author publisher)}}
  Ce texte est seulement visible s'il y a un auteur OU un éditeur.
{{/if}}
eqUtilisez l’opérateur eq (equal) pour vérifier si deux arguments sont égaux.
{{#if (eq element.title 'Tableau croisé')}}
  Le titre de l'élément est <i>Tableau croisé</i> !
{{/if}}
neUtilisez l’opérateur ne (not equal) pour vérifier si deux arguments ne sont pas égaux.
{{#if (ne element.title 'Tableau croisé')}}
  Le titre de l'élément n'est pas <i>Tableau croisé</i> !
{{/if}}
ltUtilisez l’opérateur lt (less than) pour vérifier si le premier argument est inférieur au deuxième argument.
{{#if (lt counter 12)}}
  La valeur du compteur ({{counter}}) est inférieure à 12 !
{{/if}}
gtUtilisez l’opérateur gt (greater than) pour vérifier si le premier argument est plus grand que le deuxième argument.
{{#if (gt counter 12)}}
  La valeur du compteur ({{counter}}) est plus grande que 12 !
{{/if}}
leUtilisez l’opérateur le (less or equal) pour vérifier si le premier argument est inférieur ou égal au deuxième argument.
{{#if (le counter 12)}}
  La valeur du compteur ({{counter}}) est inférieure ou égale à 12 !
{{/if}}
geUtilisez l’opérateur ge (greater or equal) pour vérifier si le premier argument est plus grand ou égal au deuxième argument.
{{#if (ge counter 12)}}
  La valeur du compteur ({{counter}}) est plus grande ou égale à 12 !
{{/if}}

Utilisez des opérateurs mathématiques pour travailler avec des nombres. Vous pouvez faire des calculs ou réguler comment les nombres sont présentés.

OperatorDescription
addAdditionnez deux nombres ou plus.
10 + 5 = {{add 10 5}}
Résultat : 10 + 5 = 15
subtractSoustrayez deux nombres ou plus.
10 - 5 = {{subtract 10 5}}
Résultat : 10 - 5 = 5
multiplyMultipliez deux nombres ou plus.
10 * 5 = {{multiply 10 5}}
Résultat : 10 * 5 = 50
divideDivisez deux nombres ou plus.
10 / 5 = {{divide 10 5}}
Résultat : 10 / 5 = 2
sqrtPrenez la racine carrée d’un nombre.
La racine carrée de 25 est {{sqrt 25}}
Résultat : La racine carrée de 25 est 5
powCalculez le premier argument élevé à la puissance du deuxième argument.
Trois à la puissance de deux est {{pow 3 2}}
Résultat : Trois à la puissance de deux est 9
modCalculez le reste après avoir divisé le premier argument par le second.
5 % 4 = {{mod 5 4}}
Résultat : 5 % 4 = 1
absObtenez la valeur absolue d’un nombre.
La valeur absolue de -10 est {{abs -10}}
Résultat : La valeur absolue de -10 est 10
roundArrondissez un nombre au nombre de chiffres spécifié. Si aucun nombre de chiffres n’est spécifié, le nombre est arrondi à 0 chiffres.
La première valeur arrondie est {{round 25.9999}}, la deuxième est {{round 12.123456 2}}
Résultat : la première valeur arrondie est 26, la deuxième est 12.12
randomGénérez un nombre aléatoire entre les nombres spécifiés.
Un nombre aléatoire entre 5 et 10 est {{random 5 10}}
Résultat : Un nombre aléatoire entre 5 et 10 est 8
countObtenez un compte du nombre d’éléments dans une liste (array).
Il y a {{count report.elements}} éléments dans ce rapport
Résultat : Il y a 3 éléments dans ce rapport
kFormatez un nombre en notation K.
{{k 12468}}
Résultat : 12K
decChoisissez explicitement le séparateur décimal.
{{dec 12.3 ','}}
Résultat : 12,3

Utilisez des opérateurs de date pour afficher ou manipuler les dates et les heures.

OpérateurDescription
dateFormatAffichez une date en utilisant un format spécifié.
Votre date de naissance : {{dateFormat contact.dateOfBirth 'MMM d yy'}}
Résultat : Votre date de naissance : Feb 12 87

Quelques exemples des formats que vous pouvez utiliser :

d: 17/08/2000
D: jeudi 17 août 2000
f: jeudi 17 août 2000 16:32
F: jeudi 17 août 2000 16:32:32
g: 17/08/2000 16:32
G: 17/08/2000 16:32:32
m: 17 août
r: Thu, 17 Aug 2000 16:32:32 GMT
s: 2000-08-17T16:32:32
t: 16:32
T: 16:32:32
u: 2000-08-17 16:32:32Z
U: jeudi 17 août 2000 14:32:32
y: août 2000
dddd, MMMM dd yyyy: jeudi, août 17 2000
dddd, MMMM dd: jeudi, août 17
M/yy: 8/00
dd-MM-yy: 17-08-00
dateAddAjoutez un certain intervalle de temps à une date.
Spécifiez la date, le nombre d’unités à ajouter (pour sous-traître, utilisez une valeur négative) et l’unité-même.
L’unité peut être l’une des suivantes (en anglais) : year, month, day, hour, minute et second.
Nous vous répondons avant le {{dateFormat (dateAdd respondent.dateResponded 3 'day') 'D'}}.
Résultat : Nous vous répondons avant le jeudi 17 août 2000.

Attention : la date sera toujours renvoyée en format ISO 8601. Utilisez dateFormat si vous souhaitez l’afficher de manière élégante.

Utilisez des opérateurs de texte pour modifier comment le texte sera montré.

OpérateurDescription
upperCaseConvertez le texte en majuscules.
{{upperCase 'un texte'}}
Résultat : UN TEXTE
lowerCaseConvertez le texte en minuscules.
{{lowerCase 'Un TEXTE'}}
Résultat : un texte

Utilisez des variables temporaires personnalisées pour diviser de grandes fonctions en parties plus petites. Ces variables ne sont enregistrées nulle part, elles ne sont disponibles que temporairement dans la même page.

OpérateurDescription
setEnregistrez une valeur temporaire. Vous devez spécifier un nom et la valeur.
{{set 'maSomme' (add 1 2)}}

Attention : aucun résultat ne sera affiché à ce moment. Utilisez la fonction dessous pour obtenir cette variable.

getObtenez une valeur temporaire en utilisant le nom que vous avez spécifié avec l’opérateur set.
{{get 'maSomme'}}
Résultat : 3

Vous pouvez combiner tous ces opérateurs pour créer une logique plus avancée. Quelques exemples :

{{#if (lt element.statistics.1.nps element.statistics.2.nps)}}
Votre score NPS est inférieur à celui du groupe entier. Veuillez réviser votre plan d'action NPS.
{{/if}}

Traduction : “Si le NPS de votre région est inférieur au benchmark du groupe entier, montrez un message.” Cela signifierait que cet élément a deux sources de données, toutes deux de la même question NPS, et la deuxième étant définie comme un benchmark. Ainsi, elle ne sera pas affectée par le filtre de partage. La première source de données est affectée par le filtre de partage, ce qui permet cette comparaison

Texte formaté / non formaté

Il est possible d’utiliser du texte formaté et des images (HTML) en combinaison avec CSL. Si vous utilisez des variables qui contiennent du texte contenant du code HTML, le contenu sera affiché en utilisant le format :

{{survey.questions.monEtiquetteDeDonnees.text}}
Exemple du texte avec une partie en italique.

Vous pouvez également supprimer le formatage HTML et afficher tout sous forme de texte brut à l’aide de .unformatted :

{{survey.questions.myDataLabel.text.unformatted}}
Exemple du texte avec une partie en italique.

Besoin d’aide ?

Notre langage de script CheckMarket offre d’énormes possibilités qui ne peuvent bien entendu pas toutes être couvertes gratuitement par notre service d’assistance. L’utilisation de notre langage de script (CSL) par vous-même est incluse dans toutes nos formules de prix et nous offrons des services de consultation par un spécialiste aux clients qui en ont besoin.

Voulez-vous créer des enquêtes / rapports avancés, mais le temps vous manque ? Laissez l’un de nos responsables de projet faire la rédaction pour vous !

Demandez une offre

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.