Actions

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

From LimeSurvey Manual

(Created page with "For bedre at forstå relevanskonceptet, lad os fokusere på følgende undersøgelse, som beregner kropsmasseindekset (BMI) for undersøgelsens respondenter. For at downloade d...")
(Created page with "=ExpressionScript - præsentation=")
 
(31 intermediate revisions by the same user not shown)
Line 36: Line 36:
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: [[Media:LS3_em_tailoring.zip|eksempel på undersøgelse af Body Mass Index]].
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: [[Media:LS3_em_tailoring.zip|eksempel på undersøgelse af Body Mass Index]].


The relevance equation is shown below in the '''Relevance''' column after the variable name. The relevance values of weight, weight_units, height, and height_units are all 1 (default value), meaning that those questions are always displayed. However, the relevance for BMI is {!is_empty(height) and !is_empty(weight)}, which means that BMI will only be computed if the subject enters a value for both height and weight (thereby avoiding the risk of getting a zero error). Also, question "Report" is only shown if the respondent answers all four main questions (height, heightunits, weight, weightunits).
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).




Line 42: Line 42:




<div class="simplebox"> [[File:help.png]] '''Note:''' The above image comes from the [[Show logic file|survey logic file]] which allows you to look for syntax errors before activating the survey.</div>
<div class="simplebox">[[File:help.png]] '''Bemærk:''' Ovenstående billede kommer fra [[Show logic file|survey logic file]], som giver dig mulighed for at lede efter syntaksfejl, før du aktiverer undersøgelsen.</div>




Relevance is shown and editable when:
Relevans vises og kan redigeres, når:
*you wish to view/edit question-level relevance
*du ønsker at se/redigere relevans på spørgsmålsniveau
*you wish to view/edit group-level relevance
*du ønsker at se/redigere relevans på gruppeniveau




===Viewing / Editing Question-Level Relevance===
===Visning/redigering af relevans på spørgsmålsniveau===




This equation computes the Body Mass Index (BMI). It is only asked if the person enters their height and weight.
Denne ligning beregner Body Mass Index (BMI). Der spørges kun om personen indtaster sin højde og vægt.




Line 59: Line 59:




This is the edit screen for the "BMI" question.
Dette er redigeringsskærmen for "BMI"-spørgsmålet.




Line 65: Line 65:




Note that you do not use the curly braces when you enter a relevance equation.
Bemærk, at du ikke bruger de krøllede parenteser, når du indtaster en relevansligning.




===Viewing / Editing Group-Level Relevance===
===Visning/redigering af relevans på gruppeniveau===




Let's focus now on another example - a simple census survey. To download it, click on the following link: [[Media:LS3_group_relevance.zip|Census survey example]].  
Lad os nu fokusere på et andet eksempel - en simpel folketællingsundersøgelse. For at downloade den skal du klikke på følgende link: [[Media:LS3_group_relevance.zip|eksempel på folketælling]].  


The first page asks how many people live with you and stores that in the "cohabs" variable. This page is only shown if you have more than one cohabitant (it is shown for the second person cohabitating with you). Also, p2name, p2age. p2sum are displayed only if the question before each of them contains a response.
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.




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'':
Her er skærmbilledet til redigering af relevansen på gruppeniveau af '' Samboer 2'':




Line 87: Line 87:




Note that you do not use the curly braces when you enter a relevance equation.
Bemærk, at du ikke bruger de krøllede parenteser, når du indtaster en relevansligning.


==Tailoring/Piping==
==Skræddersy/Rørføring==




ES lets you easily do simple and complex conditional tailoring. Sometimes you just need a simple substitution, like saying, "You said you purchased <nowiki>[</nowiki>Product]. What did you like best about it?". Sometimes you need conditional substitution like "<nowiki>[</nowiki>Mr./Mrs.] <nowiki>[</nowiki>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.
ES lader dig nemt lave enkel og kompleks betinget skræddersyning. Nogle gange har du bare brug for en simpel erstatning, som at sige, "Du sagde, du købte<nowiki> [</nowiki> Produkt]. Hvad kunne du bedst lide ved det?". Nogle gange har du brug for betinget substitution som "<nowiki> [</nowiki> Hr og Fru.]<nowiki> [</nowiki> Efternavn], vil du være villig til at udfylde vores undersøgelse?". I dette tilfælde vil du bruge "Mr. eller fru." baseret på personens køn. Andre gange har du brug for endnu mere kompleks substitution (såsom baseret på en matematisk beregning). ES understøtter hver af disse typer skræddersy/rør.




===Conditional Equations===
===Betingede ligninger===




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):
Body Mass Index-eksemplet viser evnen til at beregne en persons BMI, selv mens de lader dem indtaste deres højde og vægt i to forskellige enheder (cms vs inches og kgs vs lbs):




Line 104: Line 104:




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).
I dette tilfælde er vægtkg {if(vægtenheder == "kg", vægt, vægt * 0,453592)}. Denne "if()"-funktion betyder, at hvis emnet indtaster vægten ved hjælp af kilogram, skal du bruge denne værdi, ellers gange den indtastede værdi (pund er alternativet) med 0,453592 for at konvertere den til kilogram. Højdevariablen bruger en lignende tilgang til at beregne personens højde i meter (højde i cms/100), selvom han har indtastet sin højde i tommer (1 meter=3,28084 tommer).


BMI is computed as: {weightkg / (heightm * heightm)}.
BMI beregnes som: {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.")
Endelig skræddersyr rapporten betinget budskabet til emnet og fortæller hende, hvad han indtastede. (f.eks. "Du sagde, du er 2 meter høj og vejer 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:
På billedet nedenfor bruger vægtstatus indlejrede "if()"-udsagn til at kategorisere personen som undervægtig til svært overvægtig. Du kan se dens ligning ved at kontrollere dens logik:




Line 116: Line 116:




From the edit window for this question, you can see two things:
Fra redigeringsvinduet til dette spørgsmål kan du se to ting:
#Tailoring must surround expressions with curly braces
#Skræddersy skal omgive udtryk med krøllede seler
#Expressions can span multiple lines if, as in this case, you want to make it easier to read the nested conditional logic.
#Udtryk kan spænde over flere linjer, hvis du, som i dette tilfælde, vil gøre det lettere at læse indlejret betinget logik.




Line 124: Line 124:




===Tailored Questions, Answers, and Reports===
===Skræddersyede spørgsmål, svar og rapporter===




<div class="simplebox">[[File:help.png]] '''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 <nowiki><span></nowiki> tag which is not valid inside select options.</div>
<div class="simplebox">[[File:help.png]] '''Bemærk:''' Dynamisk skræddersyet fungerer muligvis ikke, hvis svarmulighederne er gjort tilgængelige i udvalgte felter på samme spørgsmålsside. Dette skyldes, at skræddersyede skær a<nowiki></nowiki> <span>tag, som ikke er gyldigt i udvalgte muligheder.</span>


The BMI report looks like this:
BMI-rapporten ser således ud:




Line 135: Line 135:




Here is the edit window for the same question.
Her er redigeringsvinduet for det samme spørgsmål.




Line 141: Line 141:




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:
Alt inden for krøllede seler behandles som et udtryk, idet det er syntaks-fremhævet (farvekodet) i det foregående billede. Hvis du har stavefejl (såsom fejlstavede eller udefinerede variabelnavne eller funktioner), vil ES vise en fejl. I vores eksempel nedenfor:
* heightunit.shown is an undefined variable name (it is actually heightunits.shown) and
* er heightunit.shown et udefineret variabelnavn (det er faktisk heightunits.shown) og
* "rnd()" is an undefined function (the proper function name is "round()").  
* "rnd()" er en udefineret funktion (det rigtige funktionsnavn er "round()" ).  


In both cases, the errors are located within a red box to make it easier to spot and fix them.
I begge tilfælde er fejlene placeret i et rødt felt for at gøre det nemmere at opdage og rette dem.




Line 151: Line 151:




You can also see that you can quickly create complex reports, such as a table of entered values or tailored advice.
Du kan også se, at du hurtigt kan lave komplekse rapporter, såsom en tabel med indtastede værdier eller skræddersyet rådgivning.


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.
Husk, at al skræddersyning skal omgive udtryk med krøllede seler, så LimeSurvey ved, hvilke dele af spørgsmålet der er fri tekst, og hvilke der skal analyseres af ExpressionScript-motoren.




Line 159: Line 159:




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.
ES styrer, hvordan de fleste af de avancerede spørgsmålsmuligheder fungerer. Disse kontrollerer aspekter som min/maks. antal svar, min/maks individuelle værdier, min/maks sumværdier og kontrol af, at indtastede værdier matcher specificerede strengmønstre. Enhver værdi i et af disse felter betragtes som et udtryk, så du kan have min/max-kriterier med komplekse betingede relationer til andre spørgsmål.


In all of these cases, since the advanced question attribute is always considered an expression, you do not use curly braces when specifying it.
I alle disse tilfælde, da attributten avanceret spørgsmål altid betragtes som et udtryk, bruger du ikke krøllede klammeparenteser, når du angiver den.


The [[ExpressionScript sample surveys|sample surveys]] page shows many working examples containing a variety of validation expressions.
Siden [[ExpressionScript sample surveys|sample surveys]] viser mange arbejdseksempler, der indeholder en række forskellige valideringsudtryk.


=ExpressionScript - presentation=
=ExpressionScript - præsentation=




To find out more about ExpressionScript and how you can use different expressions to enhance your survey, please click on the following [https://manual.limesurvey.org/ExpressionScript_-_Presentation link].
For at finde ud af mere om ExpressionScript, og hvordan du kan bruge forskellige udtryk til at forbedre din undersøgelse, skal du klikke på følgende [https://manual.limesurvey.org/ExpressionScript_-_Presentation-link].

Latest revision as of 11:21, 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.

Her er skærmbilledet til redigering af relevansen på gruppeniveau af Samboer 2:



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

Skræddersy/Rørføring

ES lader dig nemt lave enkel og kompleks betinget skræddersyning. Nogle gange har du bare brug for en simpel erstatning, som at sige, "Du sagde, du købte [ Produkt]. Hvad kunne du bedst lide ved det?". Nogle gange har du brug for betinget substitution som " [ Hr og Fru.] [ Efternavn], vil du være villig til at udfylde vores undersøgelse?". I dette tilfælde vil du bruge "Mr. eller fru." baseret på personens køn. Andre gange har du brug for endnu mere kompleks substitution (såsom baseret på en matematisk beregning). ES understøtter hver af disse typer skræddersy/rør.


Betingede ligninger

Body Mass Index-eksemplet viser evnen til at beregne en persons BMI, selv mens de lader dem indtaste deres højde og vægt i to forskellige enheder (cms vs inches og kgs vs lbs):



I dette tilfælde er vægtkg {if(vægtenheder == "kg", vægt, vægt * 0,453592)}. Denne "if()"-funktion betyder, at hvis emnet indtaster vægten ved hjælp af kilogram, skal du bruge denne værdi, ellers gange den indtastede værdi (pund er alternativet) med 0,453592 for at konvertere den til kilogram. Højdevariablen bruger en lignende tilgang til at beregne personens højde i meter (højde i cms/100), selvom han har indtastet sin højde i tommer (1 meter=3,28084 tommer).

BMI beregnes som: {weightkg / (heightm * heightm)}.

Endelig skræddersyr rapporten betinget budskabet til emnet og fortæller hende, hvad han indtastede. (f.eks. "Du sagde, du er 2 meter høj og vejer 70 kg").

På billedet nedenfor bruger vægtstatus indlejrede "if()"-udsagn til at kategorisere personen som undervægtig til svært overvægtig. Du kan se dens ligning ved at kontrollere dens logik:



Fra redigeringsvinduet til dette spørgsmål kan du se to ting:

  1. Skræddersy skal omgive udtryk med krøllede seler
  2. Udtryk kan spænde over flere linjer, hvis du, som i dette tilfælde, vil gøre det lettere at læse indlejret betinget logik.



Skræddersyede spørgsmål, svar og rapporter

Bemærk: Dynamisk skræddersyet fungerer muligvis ikke, hvis svarmulighederne er gjort tilgængelige i udvalgte felter på samme spørgsmålsside. Dette skyldes, at skræddersyede skær a tag, som ikke er gyldigt i udvalgte muligheder.

BMI-rapporten ser således ud:



Her er redigeringsvinduet for det samme spørgsmål.



Alt inden for krøllede seler behandles som et udtryk, idet det er syntaks-fremhævet (farvekodet) i det foregående billede. Hvis du har stavefejl (såsom fejlstavede eller udefinerede variabelnavne eller funktioner), vil ES vise en fejl. I vores eksempel nedenfor:

  • er heightunit.shown et udefineret variabelnavn (det er faktisk heightunits.shown) og
  • "rnd()" er en udefineret funktion (det rigtige funktionsnavn er "round()" ).

I begge tilfælde er fejlene placeret i et rødt felt for at gøre det nemmere at opdage og rette dem.



Du kan også se, at du hurtigt kan lave komplekse rapporter, såsom en tabel med indtastede værdier eller skræddersyet rådgivning.

Husk, at al skræddersyning skal omgive udtryk med krøllede seler, så LimeSurvey ved, hvilke dele af spørgsmålet der er fri tekst, og hvilke der skal analyseres af ExpressionScript-motoren.


Validation

ES styrer, hvordan de fleste af de avancerede spørgsmålsmuligheder fungerer. Disse kontrollerer aspekter som min/maks. antal svar, min/maks individuelle værdier, min/maks sumværdier og kontrol af, at indtastede værdier matcher specificerede strengmønstre. Enhver værdi i et af disse felter betragtes som et udtryk, så du kan have min/max-kriterier med komplekse betingede relationer til andre spørgsmål.

I alle disse tilfælde, da attributten avanceret spørgsmål altid betragtes som et udtryk, bruger du ikke krøllede klammeparenteser, når du angiver den.

Siden sample surveys viser mange arbejdseksempler, der indeholder en række forskellige valideringsudtryk.

ExpressionScript - præsentation

For at finde ud af mere om ExpressionScript, og hvordan du kan bruge forskellige udtryk til at forbedre din undersøgelse, skal du klikke på følgende [1].