x

Huvudkapitel

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Snabbstartsguide - LimeSurvey 3.0+
  3. Installation - LimeSurvey CE
  4. Så utformar du en bra enkät (guide)
  5. Komma igång
  6. Administrera LimeSurvey
  7. Enkäter - introduktion
  8. Enkätinställningar
  9. Enkätmeny
  10. Enkätens struktur
  11. Frågor - introduktion
  12. Frågegrupper - introduktion
  13. Enkäter - hantering
  14. Alternativ i enkätverktygsfältet
  15. Flerspråkig enkät
  16. ExpressionScript-motorn – Snabbstartsguide
  17. Okategoriserade och avancerade funktioner
  18. FAQ
  19. Felsökning
  20. Lösningar och genvägar
  21. Licens
  22. Ändringslogg för versioner
  23. Plugins
 Actions

Exempelenkäter för ExpressionScript

From LimeSurvey Manual

Den här sidan kan ha maskinöversatts och kan innehålla fel. Visa det engelska originalet · Förbättra den här översättningen
This page is a translated version of the page ExpressionScript sample surveys and the translation is 100% complete.


Introduktion

Det bästa sättet att lära sig använda ExpressionScript är att prova fungerande exempel och anpassa dem efter dina behov.

Nedan hittar du en samling exempelenkäter som visar (och låter dig testa) hur EM kan användas för att förbättra din enkät. Enkäterna finns i mappen /docs/demosurveys i distributionen.


Relevans, anpassning och ekvationer

Översikt

Följande exempel beräknar BMI (Body Mass Index, kroppsmassaindex) för varje respondent. Nedan ser du vilka funktioner som visas i exemplet.

EM-funktioner som visas

  1. Relevans - stöd för kraftfull villkorsstyrd logik;
  2. Piping / anpassning - möjlighet att föra in eller anpassa svar och metadata för frågor;
  3. Dynamisk anpassning - observera att rapporterna ändras på sidan medan du besvarar frågorna.
  4. Mikroanpassning - villkorsstyrd anpassning inom meningar och rapporter med if()-uttryck
  5. Ekvationer - en ny frågetyp som låter dig göra beräkningar och spara resultaten i databasen, även om beräkningen är dold
  6. Villkorsstyrd validering - valideringskriterier, till exempel det minsta tillåtna värdet, kan vara villkorsstyrda - t.ex. baserade på ekvationer.


Skärmbilder

Det här exemplet beräknar kroppsmassaindex, en beräkning utifrån din vikt och längd som visar om du är underviktig, normalviktig, överviktig eller fet. Observera att du till en början bara ser de fyra obligatoriska frågorna:



När du har angett dina uppgifter (och valt om du vill använda metriska eller icke-metriska enheter) visas en anpassad rapport som sammanfattar det du angav och talar om din viktstatus:



Här är ett annat exempel med icke-metriska enheter som visar hur resultatet ändras dynamiskt:



Det finns dolda frågor av typen Ekvation på den interna nivån som konverterar data till metriska enheter (vid behov) och sparar längd, vikt, BMI och viktstatus i metriska enheter i databasen, utan att du behöver någon egen JavaScript.

I nästa exempel kan du se hur du kan använda matematiska och andra funktioner i anpassade rapporter. Så här ser sidan ut innan du har angett några data. Det finns villkorsstyrd logik som visar tomma celler om inga (eller icke-numeriska) data har angetts, i stället för att visa "NaN" eller "Divide by Zero".



När du anger siffror ändras rapporten på sidan så att den visar beräkningen som utförs och dess resultat.



Det finns många andra exempel i den här exempelenkäten. Skärmbilden nedan visar till exempel ett av dussintals sätt att fylla i sidan Dynamic Relevance. Som hjälptexten anger kan du prova olika åldrar, och framför allt ologiska kombinationer av svar, för att se de underhållande meddelandena som genereras längst ned. Observera också att om du anger att du har fler än ett barn står det i meddelandet "I hope you enjoy playing with your X children" i stället för "I hope you enjoy playing with your child". Det visar hur du enkelt kan mikroanpassa meningar så att de passar könet och/eller antalet hos dina deltagare. Du kan till och med enkelt böja verb och substantiv utifrån kön och antal.



Ladda ner

Om du vill komma åt exempelenkäten, klicka på följande länk: LS3_em_tailoring.zip.

Exempel på folkräkning

Översikt

Det här är ett folkräkningsexempel som frågar hur många personer som ingår i ditt hushåll.

Det visar hur relevans på gruppnivå kan göra det enklare att skapa en "loop" av frågor. När jag hade skapat gruppen för Person 1 exporterade jag gruppen. Eftersom jag använde variabelnamn baserade på qcode, som p1_name, i stället för SGQA-koden kunde jag använda en textredigerare för att snabbt redigera och importera om gruppen flera gånger (det tog till exempel ungefär 10 sekunder att redigera och importera om varje upprepad grupp, samtidigt som alla variabler fick unika namn och logiken på gruppnivå blev korrekt).

Du kan också använda funktionen Kopiera fråga, men den är inte lika snabb som alternativet som föreslås ovan.

Detta visar också hur du kan förhindra att meddelandet om slutförd enkät visas innan enkäten verkligen är slutförd (t.ex. när alla nödvändiga grupper är ifyllda).


Demonstrerade EM-funktioner

  1. Relevans på gruppnivå - Uppföljningsgrupperna (Person 1–5) visas bara upp till det angivna antalet personer i hushållet;
  2. Skräddarsydd text (tailoring) - Den avslutande rapporten sammanfattar demografiska uppgifter för varje person i hushållet;
  3. Progressiv visning av frågor - Oavsett om enkäten visas grupp för grupp eller allt på en gång visas nästa fråga först när de föregående har besvarats.


Skärmbilder

Enkäten genererar en skräddarsydd rapport som visar demografin för det angivna antalet personer i hushållet:



Om du byter till läget en fråga i taget ser du att indexet anpassar frågorna. Eftersom användaren angav att personen är en kvinna frågar enkäten "Vad heter hon?". Och eftersom vi svarade "Mary" lyder nästa fråga "Hur gammal är Mary?".



Ladda ner

Om du vill ladda ner exempelenkäten klickar du här: LS3_group_relevance.zip.


Kaskadande samlingsfilter

Översikt

Den här enkäten bygger på en enkätdesign som tillhandahållits av Joy Lane Research, LLC.


Skärmbilder

Observera följande:

  • Q02 visar bara de produkter som markerades i Q01 (med hjälp av array_filter)
  • Q02 visar också "Another product", den text som angavs i fältet "Other electronic" i Q01
  • Q04 visar bara produkter från Q02 som markerades (så samlingsfiltret kaskadar)
  • Q05 visar bara produkter från Q02 som inte markerades i Q02 (med ett kaskadande array_filter_exclude)




Ladda ner

Klicka på följande länk för att ladda ner exemplet ovan: Enkätexempel LS2_cascading_array_filter.


Piping/skräddarsydd text med alla frågetyper och attribut

Översikt

Om du är osäker på hur du ska namnge dina variabler (SGQA eller Qcodes) är du inte ensam. Även om huvuddokumentationen beskriver hur du bygger upp variabelnamn med Qcode går inget upp mot att se det i en fungerande demo. Den här enkäten visar hur du kan komma åt frågeattribut och svar med ExpressionScript.


För det här exemplet rekommenderar vi att du stänger av den inbyggda HTML-redigeraren (eller byter till popup-läge) när du redigerar enkäten. Det kan ta en minut eller mer för HTML-redigeraren att visa de stora HTML-rapporterna i redigeringsläget.


Innehåll

  • Exempel på alla frågetyper
  • Alla frågetyper som kan använda "Annat" ingår, så att du kan se hur det påverkar namngivningen av variabler
  • Standardvärden för alla frågetyper som accepterar standardvärden
  • Skräddarsydd text (tailoring) - Rapporter på och utanför sidan som visar alla 16 tillgängliga EM-suffix i punktnotation.
  • Rapporterna visar alla data som hittills har angetts (så att du ser hur du kan skapa egna utskrivbara rapporter för användare i stället för skärmen för utskrift av svar)
  • Korrekt namngivning av alla variabler med Qcode och SGQA


Skärmbilder

Det här är en mycket stor enkät, så vi har valt att inte ta med några skärmbilder. Ladda i stället ner den och testa själv.


Ladda ner

Klicka på följande länk för att ladda ner enkäten: LS3_EM_question_attributes.lss

Traditionell validering i ny tappning

Översikt

Här visas alla valideringstyper som använder uttryck och hur de påverkar var och en av de frågetyper som stöder validering. I många fall är valideringstipsen dolda från början och visas bara om en fråga inte uppfyller valideringskriterierna (de försvinner alltså igen när frågan uppfyller kriterierna).


Valideringstyper som visas

  1. min_num_value_n - minsta värde för ett svar
  2. max_num_value_n - största värde för ett svar
  3. min_answers - minsta antal svar som krävs
  4. max_answers - största antal svar som tillåts
  5. multiflexible_min - minsta värde som tillåts för ett svar (för frågetypen flervalsnummer)
  6. multiflexible_max - största värde som tillåts för ett svar (för frågetypen flervalsnummer)
  7. min_num_value - minsta tillåtna summa av alla svar på frågan
  8. max_num_value - största tillåtna summa av alla svar på frågan
  9. equals_num_value - summan av alla svar på frågan måste vara lika med detta värde
  10. validation - detta är valideringen med reguljärt uttryck för frågan - den kan gälla enskilda celler


Skärmbilder

Med nya CSS-stilar visas varje valideringstyp som ett eget tips. Om de visas kan de döljas med alternativet hide_tip. Standardinställningen är att visa dem med röd text om frågan inte uppfyller valideringskriterierna och grön text om den uppfyller dem:



En användare kan inte skicka en sida som innehåller valideringsfel. Användaren varnas direkt om felaktig information har angetts:



Validering kan användas på enskilda celler i en samling, som i det här exemplet där validering med reguljära uttryck säkerställer att varje inmatning är ett korrekt formaterat amerikanskt telefonnummer inklusive riktnummer.



Ladda ner

Klicka på följande länk för att ladda ner exemplet ovan: LS3_Validation_tests.zip.


Valideringsekvationer

Översikt

Ibland behöver du anpassad validering som inte går att uppnå med de traditionella min/max-kriterierna. Då använder du alternativen em_validation_q och em_validation_sq, som låter dig skapa komplexa valideringsekvationer på fråge- respektive delfrågenivå.


På delfrågenivå introducerar vi även variabeln "this", som gör det enkelt att validera varje cell i en samling utan att behöva känna till cellens variabelnamn. Klicka här för mer information.


EM-funktioner som visas

  1. em_validation_q - detta är en ekvation som avgör om hela frågan är giltig
  2. em_validation_q_tip - detta är meddelandet som visas om frågan inte uppfyller kriterierna i em_validation_q
  3. em_validation_sq - detta är ekvationen som avgör om varje delfråga (samlingscell) är giltig
  4. em_validation_sq_tip - detta är meddelandet som visas om någon av delfrågorna är ogiltig.

När em_validation_sq används blir bakgrundsfärgen för en cell i regel röd om cellen är ogiltig, för att visa att det finns ett fel.


Skärmbilder


Den här frågan säkerställer att du anger barnens åldrar i fallande ordning genom att använda följande valideringsekvation:

q1_sq1 >= q1_sq2 && q1_sq2 >= q1_sq3 && q1_sq3 >= q1_sq4





I exemplet nedan säkerställer valideringen att högst 3 frågor besvaras på varje rad, genom att använda följande valideringsekvation:

(sum(Test_A_1, Test_A_2, Test_A_3, Test_A_4, Test_A_5) <= 3) && (sum(Test_B_1, Test_B_2, Test_B_3, Test_B_4, Test_B_5) <= 3) && (sum(Test_C_1, Test_C_2, Test_C_3, Test_C_4, Test_C_5) <= 3)

Du kan också skriva det på följande sätt, så omvandlar LimeSurvey det automatiskt vid körning till uttrycket ovan.

(sum(self.sq_A) <= 3) && (sum(self.sq_B) <= 3) && (sum(self.sq_C) <= 3)



Ladda ner

Om du vill ladda ner enkätexemplet som används i exemplen ovan klickar du på följande länk: ls2_test_em_sq_validation.lss.


Relevans för delfrågor

Översikt

Detta visar hur array_filter och valideringskriterier kan samverka. För valideringar som gäller summor beaktas endast relevanta (synliga) värden.


EM-funktioner som demonstreras

  1. array_filter
  2. array_filter_exclude
  3. min_num_value
  4. max_num_value
  5. equals_num_value

Det visar också dynamisk rapportering av antalet besvarade frågor bland kärnfrågorna.


Skärmbilder

Om du ändrar antalet synliga rader ändras summan dynamiskt. Om en delfråga markeras som irrelevant rensas inte dess värde. Om delfrågan är irrelevant bidrar i stället dess värden inte till någon ekvation.



Notera vad som händer när vi markerar "Fifth subquestion" för den första frågan "Which rows should appear below". Summan för den andra frågan "Enter some numbers" är nu 5. Även om delfråga 5 i den frågan fortfarande har värdet 14 (om du avmarkerar den femte delfrågan ser du värdet 14 igen) bidrar värdet inte till summan, eftersom det för tillfället är irrelevant. All irrelevant data rensas (sätts till NULL i databasen) när enkäten skickas, men den finns kvar på sidan om respondenter vill eller behöver ändra sina svar.



Ladda ner

Om du vill ladda ner vårt exempel klickar du här: ls2_subquestion_relevance.lss.


Använda komma som decimaltecken

Översikt

ExpressionScript ser till att endast giltiga tal kan matas in i numeriska fält. Om du matar in ett ogiltigt tal får du en varning om att något är fel (t.ex. markeras hela frågan i rött i temat fruity).

Observera att numeriska värden alltid konverteras så att de använder punkt som decimaltecken i databasen. På så sätt fungerar statistiska analyser som de ska.

Om du vill ändra decimaltecknet går du till alternativen för Textelement under fliken Inställningar och letar efter funktionen Decimaltecken.


Mer information om vad ett decimaltecken är hittar du genom att klicka [https://en.wikipedia.org/wiki/Radix_point


Frågetyper som använder decimaltecken

  1. Numerisk inmatning [N]
  2. Flera numeriska inmatningar [K]
  3. Samling (tal/siffor) [:]
  4. Samling (text) [;], när attributet numbers_only används
  5. Lista (radio) [L], när attributet other_numbers_only används
  6. Kort fritext [S], när attributet numbers_only används
  7. Flera korta textsvar [Q], när attributet numbers_only används
  8. Flervalsfråga [M], när attributet other_numbers_only används
  9. Flervalsfråga med kommentarer [P], när attributet other_numbers_only används


Skärmbilder

I skärmbilderna nedan ser du att komma kan användas som decimaltecken.



Ladda ner

Om du vill ladda ner exemplet ovan klickar du på följande länk: ls2_comma_as_radix_separator.lss.


Slumpmässiga grupper

Översikt

Den här enkäten visar hur du använder attributet random_group.

Om det här attributet används slumpas frågornas ordning varje gång du startar enkäten. När enkäten väl har startats ligger dock slumpordningen fast, även om du byter språk.


Skärmbilder

Låt oss titta på exemplet nedan. Den första slumpade frågan på sidan blir antingen Q1, Q4 eller Q7. Den andra slumpade frågan på sidan blir antingen Q2, Q5 eller Q8.



Här är slumpordningen som skapades första gången jag testade den här enkäten.



En annan slumpordning skapades när jag testade enkäten andra gången.



Men när jag bytte till franska (utan att starta om enkäten) låg slumpordningen kvar oförändrad.



Ladda ner

Om du vill ladda ner exemplet ovan klickar du på följande länk: Randomization_Group_Test.lss


Slumpmässigt ställa en fråga per grupp

Översikt

Den här enkäten visar hur du konfigurerar en enkät så att en slumpmässig fråga visas per grupp. Den innehåller 5 grupper med 6 frågor vardera. I början, i Grupp 0, fylls fem dolda ekvationsfrågor, kallade ask1-ask5, i. Var och en har värdet {floor(rand(1,6.9999))} i fältet för frågetext, vilket innebär att variablerna ask1-ask5 får ett värde mellan 1 och 6. Därefter har varje fråga i gruppen en relevansekvation som "ask1==N", där N är den N:e frågan i gruppen (den tredje frågan i grupp 1 har alltså relevansekvationen "ask1==3").

Den här enkäten fungerar lika bra i läget hela enkäten samtidigt, grupp för grupp och fråga för fråga. Eftersom slumpningen sätts i den första gruppen, och den gruppen i praktiken är dold (eftersom alla frågor ask1-ask5 är dolda), förblir slumpningen densamma för deltagaren, men varje deltagare får en egen slumpordning.


Funktioner som visas

  1. Frågetypen Ekvation
  2. Slumpfunktioner
  3. Villkorsfunktionen (if)


Skärmbilder

Det här är Group0, som använder frågetypen Ekvation för att välja slumpmässiga värden från 1 till 6 för varje grupp (utom den sista gruppen, som bara har 4 frågor). Observera att funktionen "if()" först kontrollerar om ask1 redan har satts och i så fall använder det värdet. Om värdet inte har satts används ett slumpmässigt värde för att sätta värdet på ask1.



Den här gruppen visar hur variabeln (ask4) från Group0 används för att styra vilken fråga som är synlig i den fjärde gruppen.



Ladda ner

Om du vill ladda ner enkätexemplet ovan klickar du här: Exempel på enkät med slumpmässiga frågor i en grupp.


Slumpmässigt ställa ett visst antal frågor i en grupp (en delmängd av frågorna)

  Detta gäller endast för alla slumpade frågor i en grupp, och bara om formatet Grupp för grupp eller Alla frågor samtidigt används.



Översikt

Den här enkäten visar hur du ställer en slumpmässig delmängd av frågorna i en grupp. Du kan till exempel visa 5 slumpmässiga frågor av 10 frågor i en grupp.

Enkäten har en grupp med 10 frågor. Alla frågor har tilldelats samma namn på slumpgrupp. Därför visas de i slumpmässig ordning när sidan laddas. Varje fråga får en relevansekvation som kräver att summan av "relevanceStatus" för alla andra frågor i gruppen är mindre än antalet frågor som du vill visa. Eftersom relevanceStatus tilldelas när frågorna renderas, blir detta i praktiken summan av antalet föregående frågor.

I vårt exempel med 5 av 10 skulle ekvationen för Q1 alltså vara:

sum(Q2.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

För Q2 skulle den vara:

sum(Q1.relevanceStatus, Q3.relevanceStatus, Q4.relevanceStatus, Q5.relevanceStatus, Q6.relevanceStatus, Q7.relevanceStatus, Q8.relevanceStatus, Q9.relevanceStatus, Q10.relevanceStatus) LT 5

Och så vidare...


Funktioner som demonstreras

  1. variabeln relevanceStatus
  2. Slumpning

Ladda ner

Om du vill ladda ner exemplet ovan klickar du på följande länk: Enkätexempel med 5 slumpmässiga av 10.

Betygsätta en användarinmatad lista med produkter

Översikt

Exemplet nedan visar hur du kan be användare att lista en uppsättning produkter som intresserar dem och sedan låta dem betygsätta dessa produkter.


ES-funktioner som demonstreras

  1. Anpassning av svar - vid betygsättning av produkter hämtas etiketterna från kommentarsfältet i den föregående flervalsfrågan
  2. Anpassning av skalor - många avancerade frågealternativ, till exempel skalrubriker, kan också anpassas.


Skärmbilder

Den här bilden visar att eftersom endast produkterna 1, 3 och 5 valdes visas bara dessa tre (med hjälp av attributet array_filter). Dessutom är radetiketterna i den andra frågan antingen produktnumren (om inget har angetts i kommentarsfältet) eller innehållet i kommentarsfälten.



Den här bilden visar hur de anpassade svaren anges:



Här är logikfilen (Show Logic File) för den frågan. Med den kan vi kontrollera att den villkorsstyrda logiken fungerar som önskat (till exempel om det finns några syntaxfel):



Nästa bild visar en grupp där du anger en betygsskala med 5 steg (alternativ 1–5), skalans rubrik och de produkter som du vill betygsätta. Den sista frågan visar att varje del av samlingsfrågan kan anpassas:



Nästa bild visar logikfilsvyn för den sista frågan. Som du ser kan delfrågor, svar och skalrubriker anpassas.


Ladda ner

Om du vill ladda ner enkätexemplet ovan klickar du på följande länk: Enkätexempel: betygsätta en användarinmatad lista med produkter.