Actions

ExpressionScript Engine - Quick start guide/da: Difference between revisions

From LimeSurvey Manual

(Created page with "Den første side spørger, hvor mange mennesker der bor hos dig og gemmer det i "cohabs"-variablen. Denne side vises kun, hvis du har mere end én samlever (den vises for den...")
(Created page with "Så gruppen har også relevanskriterier på spørgsmålsniveau, sådan at nogle spørgsmål kun vises, hvis du har besvaret bestemte spørgsmål før dem (f.eks. vises p2age,...")
Line 79: Line 79:




So, the group also has question-level relevance criteria, such that some questions only appear if you answered certain questions before them (e.g., p2age is displayed if p2name was answered). ES combines the Group and Question-level relevance for you. '''Questions in a group are only asked if the group as a whole is relevant. Then, only the subset of questions within the group that are relevant are asked.'''
Så gruppen har også relevanskriterier på spørgsmålsniveau, sådan at nogle spørgsmål kun vises, hvis du har besvaret bestemte spørgsmål før dem (f.eks. vises p2age, hvis p2navn blev besvaret). ES kombinerer relevansen på gruppe- og spørgsmålsniveau for dig. '''Spørgsmål i en gruppe stilles kun, hvis gruppen som helhed er relevant. Derefter stilles kun den undergruppe af spørgsmål inden for gruppen, der er relevante.'''


Here is the screenshot for editing the group-level relevance of ''Cohabitant 2'':
Here is the screenshot for editing the group-level relevance of ''Cohabitant 2'':

Revision as of 11:19, 2 January 2024


Hurtigstartguide

Inden for LimeSurvey kan du yderligere tilpasse dine undersøgelser via brugen af ExpressionScript (kort: ES). Sidenote: "ExpressionScript blev navngivet Expression Manager (EM) i tidligere version. Hvis du læser Expression Manager et sted, er det bare det gamle navn på ES."

ES kan bruges til at specificere følgende:

  1. Navigation/Forgrening - tillader en respondents svar at ændre rækkefølgen, som spørgsmålene vises i;
  2. Skræddersy/Rørføring - hjælper dig med at formulere spørgsmålet (såsom at henvise til tidligere svar eller konjugering af sætninger baseret på dine emners alder eller køn) eller hvordan man genererer tilpassede rapporter (såsom vurderingsresultater eller skræddersyede råd);
  3. Validation - sikrer, at svarene opfylder visse kriterier, som min og max værdier eller et bestemt inputmønster.

ES giver en intuitiv måde at specificere logikken for hver af disse funktioner. Næsten alt, hvad du kan skrive som en standard matematisk ligning, er et gyldigt udtryk.

ES giver i øjeblikket adgang til 70 funktioner, og den kan nemt udvides til at understøtte flere. Det giver dig også adgang til dine -variabler ved hjælp af menneske-læsbare variabelnavne (i stedet for SGQA-navne).

De kommende afsnit viser de vigtigste steder, hvor ES bruges.


Relevans (styring af navigation/forgrening)

Nogle undersøgelser bruger "Goto Logic", sådan at hvis du besvarer spørgsmål 1 med mulighed C, bliver du omdirigeret til spørgsmål 5. Denne tilgang er meget begrænset, da den er svær at validere. Desuden går det nemt i stykker, når du skal omorganisere spørgsmål. På den anden side bruger ES booleske relevansligninger til at specificere alle de betingelser, hvorunder et spørgsmål kan være gyldigt. Hvis spørgsmålet er relevant, vises spørgsmålet, ellers er det ikke relevant, og værdien "NULL" gemmes i databasen.

Bemærk: Dette svarer til, hvad der kan gøres via Betingelser editor, men ES lader dig nemt angive meget mere komplekse og kraftfulde kriterier (og lader dig bruge variabelnavnet i stedet for SGQA identifikatorer).




For bedre at forstå relevanskonceptet, lad os fokusere på følgende undersøgelse, som beregner kropsmasseindekset (BMI) for undersøgelsens respondenter. For at downloade den skal du klikke på følgende link: eksempel på undersøgelse af Body Mass Index.

Relevansligningen er vist nedenfor i kolonnen Relevans efter variabelnavnet. Relevansværdierne for vægt, vægt_enheder, højde og højdeenheder er alle 1 (standardværdi), hvilket betyder, at disse spørgsmål altid vises. Relevansen for BMI er dog {!er_tom(højde) og !er_tom(vægt)}, hvilket betyder, at BMI kun vil blive beregnet, hvis forsøgspersonen indtaster en værdi for både højde og vægt (derved undgår man risikoen for at få en nulfejl ). Spørgsmålet "Rapporter" vises også kun, hvis respondenten besvarer alle fire hovedspørgsmål (højde, højdeenheder, vægt, vægtenheder).



Bemærk: Ovenstående billede kommer fra survey logic file, som giver dig mulighed for at lede efter syntaksfejl, før du aktiverer undersøgelsen.


Relevans vises og kan redigeres, når:

  • du ønsker at se/redigere relevans på spørgsmålsniveau
  • du ønsker at se/redigere relevans på gruppeniveau


Visning/redigering af relevans på spørgsmålsniveau

Denne ligning beregner Body Mass Index (BMI). Der spørges kun om personen indtaster sin højde og vægt.



Dette er redigeringsskærmen for "BMI"-spørgsmålet.



Bemærk, at du ikke bruger de krøllede parenteser, når du indtaster en relevansligning.


Visning/redigering af relevans på gruppeniveau

Lad os nu fokusere på et andet eksempel - en simpel folketællingsundersøgelse. For at downloade den skal du klikke på følgende link: eksempel på folketælling.

Den første side spørger, hvor mange mennesker der bor hos dig og gemmer det i "cohabs"-variablen. Denne side vises kun, hvis du har mere end én samlever (den vises for den anden person, der bor sammen med dig). Også p2navn, p2age. p2sum vises kun, hvis spørgsmålet før hver af dem indeholder et svar.



Så gruppen har også relevanskriterier på spørgsmålsniveau, sådan at nogle spørgsmål kun vises, hvis du har besvaret bestemte spørgsmål før dem (f.eks. vises p2age, hvis p2navn blev besvaret). ES kombinerer relevansen på gruppe- og spørgsmålsniveau for dig. Spørgsmål i en gruppe stilles kun, hvis gruppen som helhed er relevant. Derefter stilles kun den undergruppe af spørgsmål inden for gruppen, der er relevante.

Here is the screenshot for editing the group-level relevance of Cohabitant 2:



Note that you do not use the curly braces when you enter a relevance equation.

Tailoring/Piping

ES lets you easily do simple and complex conditional tailoring. Sometimes you just need a simple substitution, like saying, "You said you purchased [Product]. What did you like best about it?". Sometimes you need conditional substitution like "[Mr./Mrs.] [LastName], would you be willing to complete our survey?". In this case, you want to use "Mr. or Mrs." based on the person's gender. Other times you need even more complex substitution (such as based upon a mathematical computation). ES supports each of these types of tailoring/piping.


Conditional Equations

The Body Mass Index example shows the ability to compute a person's BMI, even while letting them enter their height and weight in two different units (cms vs inches and kgs vs lbs):



In this case, weightkg is {if(weightunits == "kg", weight, weight * 0.453592)}. This "if()" function means that if the subject enters the weight using kilograms, use that value, otherwise multiply the entered value (pounds is the alternative) by 0.453592 to convert it to kilograms. The heightm variable uses a similar approach to compute the person's height in meters (height in cms/100), even if he has entered his height in inches (1 meter=3.28084 inches).

BMI is computed as: {weightkg / (heightm * heightm)}.

Lastly, the report conditionally tailors the message for the subject, telling her what he entered. (e.g., "You said you are 2 meters tall and weight 70 kg.")

In the below image, weightstatus uses nested "if()" statements to categorize the person as underweight to severely obese. You can see its equation by checking its logic:



From the edit window for this question, you can see two things:

  1. Tailoring must surround expressions with curly braces
  2. Expressions can span multiple lines if, as in this case, you want to make it easier to read the nested conditional logic.



Tailored Questions, Answers, and Reports

Note: Dynamic tailoring may not work if answer options are made available in select boxes on the same question page. This results from the fact that tailoring inserts a <span> tag which is not valid inside select options.

The BMI report looks like this:



Here is the edit window for the same question.



Anything within curly braces is treated as an expression, being syntax-highlighted (color coded) in the prior image. If you have any typos (such as misspelled or undefined variable names or functions), ES would show an error. In our below example:

  • heightunit.shown is an undefined variable name (it is actually heightunits.shown) and
  • "rnd()" is an undefined function (the proper function name is "round()").

In both cases, the errors are located within a red box to make it easier to spot and fix them.



You can also see that you can quickly create complex reports, such as a table of entered values or tailored advice.

Please remember that all tailoring must surround expressions with curly braces so that LimeSurvey knows which parts of the question are free text and which should be parsed by the ExpressionScript engine.


Validation

ES controls how most of the advanced question options work. These control aspects like min/max numbers of answers, min/max individual values, min/max sum values, and checking that entered values match specified string patterns. Any value in one of those fields is considered an expression, so you can have min/max criteria with complex conditional relationships to other questions.

In all of these cases, since the advanced question attribute is always considered an expression, you do not use curly braces when specifying it.

The sample surveys page shows many working examples containing a variety of validation expressions.

ExpressionScript - presentation

To find out more about ExpressionScript and how you can use different expressions to enhance your survey, please click on the following link.