Actions

ExpressionScript Engine - Hurtig startguide

From LimeSurvey Manual

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


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].