Passer au contenu principal

Scripting

Apercu

Le scripting permet de calculer la valeur finale d'une question profil avec du code, au lieu d'une selection manuelle.

Ce mode est utile pour appliquer une logique avancee: calcul de score, segmentation, etiquetage, ou classification dynamique selon les reponses precedentes.

Prerequis

Pour utiliser le scripting, configurez la question avec ces 3 elements:

  • Type de question: Question profil
  • Mode: Automatic
  • Type du mode automatique: Scripting (Compute a value with a script)

Quand cette configuration est active, une zone de texte apparait (de type editeur) pour ecrire le script qui calcule la valeur finale de la reponse utilisateur.

References utilisables dans le script

Le script peut lire les valeurs des questions precedentes via des references comme:

  • Q1
  • Q2.I2
  • et d'autres variantes selon la structure de la question

Le mecanisme fonctionne avec:

  • Questions profil
  • Batteries d'items
  • Questions Hotspot
  • Questions ouvertes

Syntaxe de base (JexlScript)

Le scripting est base sur JexlScript, avec une syntaxe proche de JavaScript pour les structures de controle.

Regles essentielles:

  • Terminer chaque instruction par ;
  • Declarer les variables avec var
  • Ecrire les conditions avec if (...) { ... }
  • Gerer les cas alternatifs avec else { ... }
  • Retourner la valeur finale avec return ...;
  • Utiliser ==, >, <, >=, <=, &&, || pour les tests et combinaisons logiques

Exemple de script

var genre = text(Q1);
var age = entier(Q2);

var value = "N/A";

if (genre == "Homme" || genre == "Femme") {
value = genre;

if (age > 45) {
value = value + " hors cible";
} else {
value = value + " dans la cible";
}
}

return value;

Ce que fait cet exemple:

  • Lit le genre depuis Q1 en texte
  • Lit l'age depuis Q2 en entier
  • Construit un libelle seulement pour les valeurs attendues
  • Retourne N/A si aucune classification valide n'est possible

Fonctions utiles

Quelques fonctions disponibles:

  • round(...)
  • max(...)
  • number(...)
  • text(...)
  • exponential(...)

Selon la version du projet et la configuration, d'autres fonctions utilitaires peuvent exister.

Exemples supplementaires

Score numerique avec arrondi

var scoreA = number(Q3.I1);
var scoreB = number(Q3.I2);

var total = scoreA + scoreB;
var avg = round(total / 2);

return avg;

Conserver la valeur maximale

var v1 = number(Q4);
var v2 = number(Q5);
var v3 = number(Q6);

var highest = max(v1, v2, v3);
return highest;

Bonnes pratiques

  • Initialiser une valeur par defaut (par exemple "N/A")
  • Convertir explicitement les valeurs (text(...), number(...)) avant comparaison
  • Garder des scripts lisibles et courts
  • Tester les cas limites (reponse vide, valeur inattendue, reponse manquante)
  • Verifier que chaque branche retourne bien une valeur