Actions

Moteur ExpressionScript - Guide de démarrage rapide

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript Engine - Quick start guide and the translation is 100% complete.


Guide de démarrage rapide

Dans LimeSurvey, vous pouvez personnaliser davantage vos enquêtes via l'utilisation d'ExpressionScript (abrégé : ES). Sidenote : "ExpressionScript était nommé Expression Manager (EM) dans la version précédente. Si vous lisez Expression Manager quelque part, il s'agit simplement de l'ancien nom d'ES."

ES peut être utilisé pour spécifier les éléments suivants :

  1. Navigation/Branching - permet aux réponses d'un répondant de modifier l'ordre dans lequel les questions sont affichées;
  2. Adaptation/Piping - vous aide à formuler la question (par exemple en faisant référence à réponses antérieures, ou conjugaison de phrases en fonction de l'âge ou du sexe de vos sujets) ou comment générer des rapports personnalisés (comme des résultats d'évaluation ou des conseils personnalisés);
  3. Validation - garantit que les réponses répondent à certains critères, comme les valeurs min et max ou un certain modèle d'entrée.

ES fournit un moyen intuitif de spécifier la logique de chacune de ces fonctionnalités. Presque tout ce que vous pouvez écrire sous forme d’équation mathématique standard est une expression valide.

ES donne actuellement accès à 70 fonctions et peut être facilement étendu pour en prendre en charge davantage. Il vous permet également d'accéder à vos variables en utilisant des noms de variables lisibles par l'homme (plutôt que des SGQA names).

Les sections suivantes montrent les principaux endroits où l'ES est utilisé.


Pertinence (Contrôle de la navigation/branchement)

Certaines enquêtes utilisent « Goto Logic », de sorte que si vous répondez à la question 1 avec l'option C, vous êtes redirigé vers la question 5. Cette approche est très limitée car difficile à valider. De plus, il se casse facilement lorsque vous devez réorganiser les questions. D'autre part, ES utilise des Équations de pertinence booléennes pour spécifier toutes les conditions dans lesquelles une question peut être valide. Si la question est pertinente, alors la question est affichée, sinon elle n'est pas applicable et la valeur « NULL » est stockée dans la base de données.

Remarque : Ceci est similaire à ce qui peut être fait via l'Conditions editor, mais ES vous permet de spécifier facilement des critères beaucoup plus complexes et puissants (et vous permet d'utiliser le nom de la variable plutôt que identifiants SGQA).




Pour mieux comprendre le concept de pertinence, concentrons-nous sur l'enquête suivante qui calcule l'indice de masse corporelle (IMC) des répondants à l'enquête. Pour le télécharger, cliquez sur le lien suivant : Exemple d'enquête sur l'indice de masse corporelle.

L'équation de pertinence est présentée ci-dessous dans la colonne Pertinence après le nom de la variable. Les valeurs de pertinence de poids, poids_unités, hauteur et hauteur_unités sont toutes 1 (valeur par défaut), ce qui signifie que ces questions sont toujours affichées. Cependant, la pertinence pour l'IMC est {!is_empty(height) et !is_empty(weight)}, ce qui signifie que l'IMC ne sera calculé que si le sujet saisit une valeur pour la taille et le poids (évitant ainsi le risque d'obtenir une erreur nulle). De plus, la question « Rapport » ne s'affiche que si le répondant répond aux quatre questions principales (taille, unités de taille, poids, unités de poids).



Fichier:help.png Remarque : L'image ci-dessus provient du fichier logique de l'enquête qui vous permet de rechercher les erreurs de syntaxe avant d'activer l'enquête.


La pertinence est affichée et modifiable lorsque :

  • vous souhaitez afficher/modifier la pertinence au niveau de la question
  • vous souhaitez afficher/modifier la pertinence au niveau du groupe


Affichage/Modification de la pertinence au niveau des questions

Cette équation calcule l'indice de masse corporelle (IMC). Il est seulement demandé si la personne indique sa taille et son poids.



Ceci est l'écran d'édition de la question « IMC ».



Notez que vous n’utilisez pas d’accolades lorsque vous saisissez une équation de pertinence.


Affichage/Modification de la pertinence au niveau du groupe

Concentrons-nous maintenant sur un autre exemple : une simple enquête de recensement. Pour le télécharger, cliquez sur le lien suivant : Exemple d'enquête de recensement.

La première page demande combien de personnes vivent avec vous et stocke cela dans la variable "cohabs". Cette page ne s'affiche que si vous avez plus d'un cohabitant (elle s'affiche pour la deuxième personne cohabitant avec vous). Aussi, p2name, p2age. p2sum ne sont affichés que si la question précédant chacune d'elles contient une réponse.



Ainsi, le groupe a également des critères de pertinence au niveau des questions, de sorte que certaines questions n'apparaissent que si vous avez répondu à certaines questions avant elles (par exemple, p2age est affiché si p2name a reçu une réponse). ES combine la pertinence au niveau du groupe et de la question pour vous. Les questions en groupe ne sont posées que si le groupe dans son ensemble est pertinent. Ensuite, seul le sous-ensemble de questions pertinentes au sein du groupe est posé.

Voici la capture d'écran permettant de modifier la pertinence au niveau du groupe de « Cohabitant 2 » :



Notez que vous n’utilisez pas d’accolades lorsque vous saisissez une équation de pertinence.

Confection/Piping

ES vous permet d'effectuer facilement une personnalisation conditionnelle simple et complexe. Parfois, vous avez juste besoin d'une simple substitution, comme dire : "Vous avez dit que vous avez acheté [ Produit]. Qu'est-ce que vous avez le plus aimé?". Parfois, vous avez besoin d'une substitution conditionnelle comme " [ Monsieur Madame.] [ LastName], seriez-vous prêt à répondre à notre enquête ?". Dans ce cas, vous souhaitez utiliser "M. ou Mme." en fonction du sexe de la personne. D'autres fois, vous avez besoin d'une substitution encore plus complexe (par exemple, basée sur un calcul mathématique). ES prend en charge chacun de ces types de couture/passepoil.


Équations conditionnelles

L'exemple de l'indice de masse corporelle montre la possibilité de calculer l'IMC d'une personne, tout en lui permettant de saisir sa taille et son poids dans deux unités différentes (cm contre pouces et kg contre livres) :



Dans ce cas, poidskg est {if(weightunits == "kg", poids, poids * 0,453592)}. Cette fonction "if()" signifie que si le sujet saisit le poids en kilogrammes, utilisez cette valeur, sinon multipliez la valeur saisie (les livres sont l'alternative) par 0,453592 pour la convertir en kilogrammes. La variable heightm utilise une approche similaire pour calculer la taille de la personne en mètres (taille en cm/100), même si elle a saisi sa taille en pouces (1 mètre = 3,28084 pouces).

L'IMC est calculé comme : {poidskg / (hauteurm * hauteurm)}.

Enfin, le rapport adapte le message au sujet de manière conditionnelle, en lui indiquant ce qu'il a saisi. (Par exemple : « Vous avez dit que vous mesuriez 2 mètres et pesiez 70 kg. »)

Dans l'image ci-dessous, Weightstatus utilise des instructions "if()" imbriquées pour classer la personne comme souffrant d'insuffisance pondérale ou gravement obèse. Vous pouvez voir son équation en vérifiant sa logique :



Dans la fenêtre d'édition de cette question, vous pouvez voir deux choses :

  1. La personnalisation doit entourer les expressions d'accolades
  2. Les expressions peuvent s'étendre sur plusieurs lignes si, comme dans ce cas, vous souhaitez faciliter la lecture du logique conditionnelle imbriquée.



Questions, réponses et rapports personnalisés

Remarque : La personnalisation dynamique peut ne pas fonctionner si les options de réponse sont disponibles dans les zones de sélection de la même page de questions. Cela résulte du fait que la couture insère un balise qui n’est pas valide dans les options de sélection.

Le rapport IMC ressemble à ceci :



Voici la fenêtre d'édition pour la même question.



Tout ce qui se trouve entre accolades est traité comme une expression, étant mis en évidence par la syntaxe (codé par couleur) dans l'image précédente. Si vous avez des fautes de frappe (telles que des noms de variables ou des fonctions mal orthographiés ou non définis), ES affichera une erreur. Dans notre exemple ci-dessous :

  • heightunit.shown est un nom de variable non défini (il s'agit en fait de heightunits.shown) et
  • "rnd()" est une fonction non définie (le nom de fonction approprié est "round()" ).

Dans les deux cas, les erreurs sont situées dans un cadre rouge pour faciliter leur détection et leur correction.



Vous pouvez également constater que vous pouvez créer rapidement des rapports complexes, tels qu'un tableau de valeurs saisies ou des conseils personnalisés.

N'oubliez pas que toute personnalisation doit entourer les expressions d'accolades afin que LimeSurvey sache quelles parties de la question sont du texte libre et lesquelles doivent être analysées par le moteur ExpressionScript.


Validation

ES contrôle le fonctionnement de la plupart des options de questions avancées. Ces aspects de contrôle tels que le nombre min/max de réponses, les valeurs individuelles min/max, les valeurs de somme min/max et la vérification que les valeurs saisies correspondent aux modèles de chaîne spécifiés. Toute valeur dans l'un de ces champs est considérée comme une expression, vous pouvez donc avoir des critères min/max avec des relations conditionnelles complexes avec d'autres questions.

Dans tous ces cas, puisque l’attribut de question avancée est toujours considéré comme une expression, vous n’utilisez pas d’accolades lors de sa spécification.

La page exemples d'enquêtes présente de nombreux exemples de travail contenant diverses expressions de validation.

ExpressionScript - présentation

Pour en savoir plus sur ExpressionScript et sur la façon dont vous pouvez utiliser différentes expressions pour améliorer votre enquête, veuillez cliquer sur le lien suivant [1].