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:
Q1Q2.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
Q1en texte - Lit l'age depuis
Q2en entier - Construit un libelle seulement pour les valeurs attendues
- Retourne
N/Asi 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