x

Hovedkapitler

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Hurtigstartveiledning - LimeSurvey 3.0+
  3. Installasjon - LimeSurvey CE
  4. Hvordan lage en god undersøkelse (veiledning)
  5. Komme i gang
  6. Administrere LimeSurvey
  7. Undersøkelser - introduksjon
  8. Innstillinger for undersøkelse
  9. Meny for undersøkelse
  10. Undersøkelsesstruktur
  11. Spørsmål - introduksjon
  12. Spørsmålsgrupper - introduksjon
  13. Undersøkelser - administrasjon
  14. Verktøylinjen for undersøkelsen
  15. Flerspråklig undersøkelse
  16. ExpressionScript-motor – Hurtigstartguide
  17. Ukategoriserte og avanserte funksjoner
  18. Vanlige spørsmål (generelt)
  19. Feilsøking
  20. Løsninger og omveier
  21. Lisens
  22. Versjonsendringer
  23. Tillegg
 Actions

ExpressionScript – veiledninger

From LimeSurvey Manual

Denne siden kan være maskinoversatt og kan inneholde feil. Vis den engelske originalen · Forbedre denne oversettelsen
This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


Oversikt over det som er forklart tidligere

Hvis du har fulgt strukturen i LimeSurvey-håndboken til nå, kjenner du allerede LimeSurvey-terminologien. Deretter gikk vi gjennom uttrykk og variabler for å lære hvordan vi kan forbedre spørreundersøkelsene våre. I neste del gikk vi gjennom typene og betydningen av syntaksutheving for å lære hvordan syntaksfeil rettes.

Når disse grunnleggende begrepene er dekket, kan vi gå videre til eksempler og forklare hvordan uttrykk fungerer i LimeSurvey.


Syntaksutheving

Skjermbildene nedenfor viser eksempler, men viser ikke verdiene i verktøytipsene. Et verktøytips er en informasjonsboks som vises når du holder musepekeren over fargede ord i fet skrift.

Takket være syntaksutheving er det veldig enkelt å skrive korrekte uttrykk, selv de kompliserte. Selv om LimeSurvey-teamet planlegger å bygge et grafisk brukergrensesnitt for uttrykksbygging, kan du bruke den eksisterende syntaksutheving til raskt å finne og rette skrivefeil. Du kan også bruke verktøytipsene til å kontrollere at uttrykkene er riktige (f.eks. bekrefte at du har valgt de ønskede variablene).

I hvert av eksemplene er det tre kolonner:

  1. Source (kilde) – dette er råteksten som du skriver inn i spørsmålsfeltet i LimeSurvey
  2. Pretty Print – dette er den syntaksuthevede versjonen av det du skrev inn
    • Merk at uttrykk vises med brun bakgrunn, men uten krøllparenteser rundt seg i denne utheving.
    • Siden EM støtter rekursiv substitusjon, ville visning av krøllparenteser i utheving gitt syntaksfeil
  3. Result (resultat) – dette er utdataene som genereres når EM behandler kilden
    • Alt som kan erstattes på riktig måte, blir erstattet
    • Uttrykk med feil vises i linjen, med syntaksutheving. Feil er omgitt av en boks med rød ramme.


Riktig syntaks

Nedenfor finner du eksempler på riktig syntaks:

  1. Values (verdier): viser at kjente variabler er fargekodet etter om de er satt på den gjeldende siden.
  2. Question Attributes (spørsmålsattributter): viser at punktnotasjon gir tilgang til noen egenskaper ved spørsmål
  3. Math (matematikk): viser at enkle og komplekse beregninger støttes
  4. TextProcessing (tekstbehandling): viser noen av de tilgjengelige tekstbehandlingsfunksjonene
  5. Dates (datoer): viser to av de tilgjengelige datofunksjonene
  6. Conditional (betinget): viser bruken av funksjonen if(). Valgene kan nøstes.
  7. Tailored paragraph (tilpasset avsnitt): du kan tilpasse en rapport fullstendig basert på tidligere verdier
  8. EM processes within strings (EM behandler innenfor strenger): viser at EM kan gjøre substitusjoner inne i strenger. Dette eksempelet genererer et tilpasset bildenavn.
  9. EM doesn't process curly braces like these (EM behandler ikke krøllparenteser som disse): viser at hvis krøllparentesene er escapet, eller det er et mellomrom mellom uttrykket og krøllparentesene, ignorerer ES uttrykket.


EM-syntaks med feil

Her er eksempler på vanlige feil når du skriver ES-uttrykk. Merk at verktøytipsene gir tilleggsinformasjon.

  1. Innebygd JavaScript der det mangler mellomrom etter krøllparentesen
    • Siden «document.write» står rett etter en krøllparentes, tror EM at det er et uttrykk, og setter røde bokser rundt «document» og «write», siden de er henholdsvis en udefinert variabel og en udefinert funksjon
  2. Ukjente/feilstavede variabler, funksjoner og operatorer
    • Her glemte vi at vi bruker variabelnavnet «gender» i stedet for «sex», men EM fanger opp feilen. Den setter også rød boks rundt '++', siden det ikke er en støttet operator.
  3. Advarer hvis du bruker = i stedet for eq, eller utfører verditilordninger
    • Merk at '=' og '+=' er i rød tekst i stedet for svart. Hvis du holder musepekeren over dem, ser du advarsler om at du tilordner en verdi.
  4. Feil antall argumenter for funksjoner
    • if() tar 3 argumenter, men har fått 4, så hvis du holder pekeren over «if» med rød boks, forklares feilen og den støttede syntaksen vises
    • sum() tar et ubegrenset antall argumenter, men vi hadde et overflødig komma før avsluttende parentes, så det får rød boks
  5. Parenteser som ikke stemmer overens
    • Dette er en av de vanligste feilene når man skriver uttrykk.
    • Dette viser to eksempler på manglende avsluttende parentes, og ett eksempel på én avsluttende parentes for mye.
  6. Ikke-støttet syntaks
    • Hvis du bruker en operator eller et skilletegn som ES ikke støtter, får det rød boks.
  7. Ugyldige tilordninger
    • Noen variabler er lese-/skrivbare og kan få endret verdien. Andre er skrivebeskyttede.
    • Hvis du prøver å endre verdien til en skrivebeskyttet variabel, går det ikke. EM setter rød boks rundt forsøket.
    • Hvis du prøver å tilordne en verdi til en ligning eller en streng, får du også en feil



«Live»-eksempler på syntaksutheving med aktive verktøytips

KildePretty PrintResultat
Her er et eksempel på riktig syntaks med verktøytips
Hei {if(gender=='M','Mr.','Mrs.')} {surname}, klokken er nå {date('g:i a',time())}. Vet du hvor dine {sum(numPets,numKids)} barn og kjæledyr er?
Her er et eksempel på riktig syntaks med verktøytips
Hei if(gender == 'M','Mr.','Mrs.') surname, klokken er nå date('g:i a',time()). Vet du hvor dine sum(numPets,numKids) barn og kjæledyr er?
Her er et eksempel på riktig syntaks med verktøytips
Hei Mr. Smith, klokken er nå 6:07 am. Vet du hvor dine 3 barn og kjæledyr er?
Her er vanlige feil, slik at du kan se verktøytipsene
Variabler brukt før de er deklarert: {notSetYet}
Ukjent funksjon: {iff(numPets>numKids,1,2)}
Ukjent variabel: {sum(age,num_pets,numKids)}
Feil antall parametere: {sprintf()},{if(1,2)},{date()}
Tilordning til skrivebeskyttede variabler:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Ubalanserte parenteser: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Her er vanlige feil, slik at du kan se verktøytipsene
Variabler brukt før de er deklarert: notSetYet
Ukjent funksjon: iff(numPets > numKids,1,2)
Ukjent variabel: sum(age,num_pets,numKids)
Feil antall parametere: sprintf(),if(1,2),date()
Tilordning av skrivebeskyttede variabler:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Ubalanserte parenteser: pow(3,4,(pow(3,4),pow(3,4))
Her er vanlige feil, slik at du kan se verktøytipsene
Variabler brukt før de er deklarert: notSetYet
Ukjent funksjon: iff(numPets > numKids,1,2)
Ukjent variabel: sum(age,num_pets,numKids)
Feil antall parametere: sprintf(),if(1,2),date()
Tilordning av skrivebeskyttede variabler:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Ubalanserte parenteser: pow(3,4,(pow(3,4),pow(3,4))
Her er noe av syntaksen som ikke støttes
Ingen støtte for '++', '--', '%',';': {min(++age, --age,age % 2);}
Heller ikke '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Heller ikke matriser: {name[2], name['mine']}
Her er noe av syntaksen som ikke støttes
Ingen støtte for '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Heller ikke '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Heller ikke matriser: name [ 2 ] ,name [ 'mine' ]
Her er noe av syntaksen som ikke støttes
Ingen støtte for '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Heller ikke '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Heller ikke matriser: name [ 2 ] ,name [ 'mine' ]


Eksempler på skreddersying

"Kjære {Mr}/{Mrs} Smith..."

Bruk funksjonen if() for å velge betinget om «Mr.» eller «Mrs.» skal vises.

Syntaksen er if(test,do_if_true,do_if_false).

# Kode Spørsmål Type
1 gender Hva er ditt kjønn? Kjønn
2 example1 Kjære {if(gender=='M','Mr.','Mrs.')} Smith, ... Lang fritekst



Som du ser nedenfor, tilpasses «Mr» og «Mrs» etter hva respondenten velger som svar på spørsmålet «gender».



"Kjære {Mr}/{Mrs} Smith..." i invitasjons-e-post

Du kan bruke eksempelet ovenfor i invitasjons-e-posten ved å bruke attributter fra deltakertabellen. Bruk funksjonen if() for å velge om «Mr.» eller «Mrs.» skal brukes i e-posten.


Syntaksen er "if(test,do_if_true,do_if_false)".

# attributt verdi
1 Etternavn Smith
2 E-postadresse test@test.com
3 ATTRIBUTE_2 M


Tekst i invitasjons-e-posten:

Kjære {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

du er invitert til å delta i en undersøkelse:

https:/...



Visning av e-posten:


Eksempler på beregning / vurdering

Beregn vurderingsverdier under kjøring og lagre resultatene i undersøkelsesdataene

Dette eksempelet bruker alle funksjonene i EM, inkludert relevans, skreddersying og spørsmålstypen ligning.

Det viser også at alle disse funksjonene støtter JavaScript. Hvis du bruker dem på en side, endres siden dynamisk etter hvert som deltakerne angir og endrer svarene sine.

# Kode Spørsmål Type Relevans
1 numKids Hvor mange barn har du? Numerisk 1
2 kid1 Hvor gammelt er ditt første barn? Numerisk numKids >= 1
3 kid2 Hvor gammelt er ditt andre barn? Numerisk numKids >= 2
4 kid3 Hvor gammelt er ditt tredje barn? Numerisk numKids >= 3
5 kid4 Hvor gammelt er ditt fjerde barn? Numerisk numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} Ligning 1
7 kidSummary Du sa at du har {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} Tekstvisning 1


Hvis du vil laste ned dette eksempelet, klikker du på følgende lenke: Assessments_survey_example.


Nedenfor finner du skjermbilder av representative spørsmål. Som du ser, syntaksutheves alle felt som kan inneholde tilpasning i EM. Her ser du eksempler på syntaksutheving av relevans, spørsmålstypen Ligning og erstatninger i et spørsmål. Du kan også bruke erstatninger i hjelpetekst, visning av gruppeoverskrift, velkomstmelding og sluttmelding.

I neste eksempel er relevansen {numKids >= 2), så spørsmålet vises bare hvis respondenten oppgir at hun har minst to barn.



Nedenfor ser du at hver variabel har suffikset .NAOK. Dette skyldes hvordan EM støtter kaskaderende relevans. Uten .NAOK ville summen bare blitt beregnet hvis personen oppga at hun har 4 barn (dvs. hvis alle variablene er relevante). Bruken av .NAOK betyr at vi vil beregne summen selv om alle eller noen av variablene er irrelevante (dvs. at «Ikke aktuelt» (NA) er greit (OK)).

Attributten .NAOK påvirker imidlertid bare om variabler sendes inn til EM. Hvis respondenten først oppgir at hun har 3 barn og fyller inn alder for hvert av dem, men deretter ombestemmer seg og sier at hun har 2, vil vi ikke se summen av de 3 oppgitte verdiene, siden det tredje barnet nå ikke lenger er «ikke aktuelt» i vårt tilfelle:



Hvert enkelt uttrykk er fargekodet med brun bakgrunn. Som du ser, er det tre separate uttrykk her. Det siste inneholder en melding som bare vises hvis personen har mer enn ett barn.



Her er skjermbilder av undersøkelsen i bruk.

Når du først åpner siden, ser du dette. Merk at det står «You have 0 children» i stedet for «You have 0 child».



Hvis jeg endrer antall barn til 1, endres visningen umiddelbart til dette, selv om den er på samme side:



Legg merke til at grammatikken nå er riktig: «You have 1 child».

Nå endrer jeg antall barn til 3, og visningen endres umiddelbart til dette.

Legg merke til at du nå ser den betingede meldingen nederst: «The sum of ages of your first 3 kids is 0.».



Nå fyller jeg inn alder for mine tenkte barn, og jeg får denne visningen med summen av alderen deres:



Også her oppdateres poengsummen og visningen umiddelbart etter hvert som jeg skriver inn verdiene, så du kan bruke dette til å vise en løpende sum av en vurderingspoengsum.


Nå endrer jeg antall barn til 2. Visningen har endret seg til dette:



Legg merke til at selv om jeg hadde oppgitt verdien 5,5 for det tredje barnet, summerer rapporten nå bare verdiene for de to første barna.

Årsaken er at den tredje verdien nå er irrelevant, og irrelevante verdier ignoreres aktivt av EM.

Hvis jeg endrer antall barn tilbake til 3, ser jeg verdien 5,5 som jeg oppga, igjen. Jeg mister altså ikke informasjon jeg har skrevet inn på siden.

Hvis jeg derimot går til neste eller forrige side, blir alle irrelevante verdier satt til NULL i sesjonen og i databasen. Hvis jeg altså beholder verdien 2, går til neste side og så kommer tilbake og oppgir at jeg faktisk har 3 barn, ser jeg ikke lenger alderen 5,5.


Skriv inn data og se en dynamisk oppdatert rapport over det som ble skrevet inn på samme side

Dette eksempelet viser tilpasningsprosessen i LimeSurvey.

Du kan laste ned dette eksempelet ved å klikke på følgende lenke: Eksempelundersøkelse med dynamiske endringer.

Slik ser siden ut til å begynne med. Du ser bare spørsmålet om hvilken by du bor i:



Når du begynner å skrive inn et svar, starter også tilpasningsprosessen:


Når du skriver inn svar, oppdateres tabellen nederst på siden og viser svarkodene og verdiene for svarene dine.


Vanlige feilsøkingseksempler

Nestede hvis()-setninger (betinget logikk)

EM støtter funksjonen "if(test,do_if_true,do_if_false)" slik at du kan utføre betinget logikk eller tilpasning. Denne funksjonen kan nestes for å oppnå det samme som "if { } else if { } else { }". EM gir deg beskjed hvis parentesene ikke er balanserte (f.eks. hvis du mangler en avsluttende høyreparentes), eller hvis du har for mange høyreparenteser. Du bør prøve å telle parentesene når du skriver lange nestede if-setninger, lagre, kontrollere om det finnes syntaksfeil, og rette dem hvis noen blir funnet. La oss se på eksempelet nedenfor sammen.

Spørsmålsgruppen som brukes nedenfor, kan hentes her: Eksempel på tilpasningsundersøkelse.lsg


Først, når ingenting er skrevet inn, ser du bare "Hallo."



Hvis du skriver inn et navn, står det "Hallo {name}."



Hvis du skriver inn en alder, får du en tilpasset melding, avhengig av om du er et barn i førskolealder eller ikke:



Skolealder, tenåring eller voksen. Her er en tenåring som ønsker å være anonym:



Her er logikkfilen til gruppen. Som du kan se i det "if-baserte" spørsmålet, finnes det nestede if-setninger basert på personens alder.



Når du først redigerer dette spørsmålet, er det sannsynlig at du på et tidspunkt får feil antall parenteser. Dette skjer hvis du har for få:



Hvis du holder musepekeren over ordet "if", som er omgitt av en rød boks, står det "Parentheses not balanced". I dette tilfellet skal det være fire avsluttende parenteser etter "already an adult!", men det er bare tre.

Hvis du derimot har en ekstra høyreparentes, blir den omgitt av en rød boks, slik:



Når du redigerer spørsmålet, ser spørsmålet slik ut: