x

Pääluvut

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Pikaopas - LimeSurvey 3.0+
  3. Asennus - LimeSurvey CE
  4. Miten suunnitella hyvä kysely (opas)
  5. Aloitus
  6. LimeSurveyn hallinnointi
  7. Kyselyt - johdanto
  8. Kyselyn asetukset
  9. Kyselyn valikko
  10. Kyselyn rakenne
  11. Kysymykset - johdanto
  12. Kysymysryhmät - johdanto
  13. Kyselyt - hallinta
  14. Kyselyn työkalupalkin asetukset
  15. Monikielinen kysely
  16. ExpressionScript-moottori - Pikaopas
  17. Luokittelemattomat ja edistyneet ominaisuudet
  18. Yleiset usein kysytyt kysymykset
  19. Vianmääritys
  20. Kiertotavat
  21. Lisenssi
  22. Version muutoslogi
  23. Lisäosat
 Actions

ExpressionScript-käyttöohjeet

From LimeSurvey Manual

Tämä sivu on saatettu kääntää konekäännöksenä, ja se voi sisältää virheitä. Näytä englanninkielinen alkuperäinen · Paranna tätä käännöstä
This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


Yleiskatsaus aiemmin käsiteltyyn

Jos olet seurannut LimeSurveyn ohjeen rakennetta tähän asti, tunnet jo LimeSurveyn terminologian. Seuraavaksi kävimme läpi lausekkeet ja muuttujat, jotta voit oppia parantamaan kyselyjäsi. Seuraavassa osassa siirryimme syntaksin korostuksen tyyppeihin ja merkityksiin, jotta voit oppia korjaamaan syntaksivirheet.

Kun nämä perusasiat on käyty läpi, voimme siirtyä esimerkkeihin ja selittää, miten lausekkeet toimivat LimeSurveyssa.


Syntaksin korostus

Seuraavat kuvakaappaukset ovat esimerkkejä, mutta ne eivät näytä työkaluvihjeiden arvoja. Työkaluvihje on tietoruutu, joka näytetään, kun viet hiiren osoittimen minkä tahansa lihavoidun värillisen sanan päälle.

Syntaksin korostuksen ansiosta oikeiden lausekkeiden laatiminen on helppoa, myös monimutkaisten. Vaikka LimeSurvey-tiimi suunnittelee lausekkeiden rakennuskäyttöliittymää, voit jo nyt käyttää nykyistä syntaksin korostusta kirjoitusvirheiden nopeaan tunnistamiseen ja korjaamiseen. Voit myös käyttää työkaluvihjeitä lausekkeidesi oikeellisuuden tarkistamiseen (esim. vahvista, että olet valinnut halutut muuttujat).

Jokaisessa esimerkissä on kolme saraketta:

  1. Lähde - tämä on raakateksti, jonka kirjoittaisit LimeSurveyn kysymyskenttään
  2. Muotoiltu tuloste - tämä on syöttämäsi tekstin syntaksikorostettu vastine
    • Huomaa, että lausekkeet näytetään vaaleanruskealla taustalla, mutta ilman aaltosulkeita tässä korostuksessa.
    • Koska EM tukee rekursiivista korvausta, aaltosulkeiden näyttäminen korostuksessa aiheuttaisi syntaksivirheitä
  3. Tulos - tämä on tuloste, jonka EM tuottaa käsitellessään lähteen
    • Kaikki, mikä voidaan korvata oikein, korvataan
    • Virheelliset lausekkeet näytetään tekstin seassa syntaksikorostuksella. Virheet ympäröidään punaisella reunuksella.


Oikea syntaksi

Alla on esimerkkejä oikeasta syntaksista:

  1. Arvot: näyttää, että tunnetut muuttujat on värikoodattu sen mukaan, onko ne asetettu nykyisellä sivulla.
  2. Kysymyksen attribuutit: näyttää, että pistenotaatiolla voi käyttää joitakin kysymysten ominaisuuksia
  3. Matematiikka: näyttää, että perus- ja monimutkaiset laskutoimitukset ovat tuettuja
  4. Tekstinkäsittely: näyttää joitakin käytettävissä olevia tekstinkäsittelyfunktioita
  5. Päivämäärät: näyttää kaksi käytettävissä olevaa päivämääräfunktiota
  6. Ehdollinen: näyttää if()-funktion käytön. Valinnat voidaan sisentää toistensa sisään.
  7. Räätälöity kappale: voit mukauttaa raportin täysin aiempien arvojen perusteella
  8. EM käsittelee merkkijonojen sisällä: näyttää, että korvauksia voi tehdä merkkijonojen sisällä. Tämä esimerkki luo räätälöidyn kuvan nimen.
  9. EM ei käsittele tällaisia aaltosulkeita: näyttää, että jos aaltosulkeet on escapoitu tai lausekkeen ja aaltosulkeiden välissä on välilyönti, ES ohittaa lausekkeen.


EM-syntaksi, joka sisältää virheitä

Tässä on esimerkkejä yleisistä virheistä ES-lausekkeita kirjoitettaessa. Huomaa, että työkaluvihjeet antavat lisätietoa.

  1. Rivinsisäinen Javascript, jossa aaltosulkeen jälkeen puuttuu välilyönti
    • Koska "document.write" on heti aaltosulkeen jälkeen, EM luulee sitä lausekkeeksi ja merkitsee "document" ja "write" punaisella laatikolla, koska ne ovat määrittelemättömiä muuttujia ja funktioita
  2. Tuntemattomat/väärin kirjoitetut muuttujat, funktiot ja operaattorit
    • Tässä unohdimme, että käytämme muuttujan nimeä "gender" eikä "sex", mutta EM huomaa virheen. Se merkitsee punaisella laatikolla myös '++', koska se ei ole tuettu operaattori.
  3. Varoittaa, jos käytät = merkkiä eq:n sijaan tai teet arvon asetuksia
    • Huomaa, että '=' ja '+=' ovat punaisella tekstillä mustan sijaan. Jos viet hiiren niiden päälle, näet varoituksia arvon asettamisesta.
  4. Väärä määrä argumentteja funktioille
    • if() ottaa 3 argumenttia, mutta sille on annettu 4, joten punaisella laatikolla merkityn "if"-sanan päälle vietäessä näytetään virheen selitys ja tuettu syntaksi
    • sum() ottaa rajoittamattoman määrän argumentteja, mutta lopetussulkeen edellä oli ylimääräinen pilkku, joten se on merkitty punaisella laatikolla
  5. Epäsopivat sulkeet
    • Tämä on yksi yleisimmistä virheistä lausekkeita kirjoitettaessa.
    • Tässä näkyy kaksi esimerkkiä puuttuvista lopetussulkeista ja yksi esimerkki yhdestä ylimääräisestä lopetussulkeesta.
  6. Tukematon syntaksi
    • Jos käytät operaattoria tai välimerkkiä, jota ES ei tue, se merkitään punaisella laatikolla.
  7. Virheelliset sijoitukset
    • Jotkin muuttujat ovat luku- ja kirjoitusmuuttujia (readWrite), joiden arvoja voi muuttaa. Toiset ovat vain luettavia.
    • Jos yrität muuttaa vain luettavan muuttujan arvoa, se ei onnistu. EM merkitsee yrityksen punaisella laatikolla.
    • Jos yrität sijoittaa arvon yhtälöön tai merkkijonoon, saat myös virheen



"Live"-esimerkkejä syntaksin korostuksesta aktiivisin työkaluvihjein

SourcePretty PrintResult
Here is an example of OK syntax with tooltips
Hei {if(gender=='M','Mr.','Mrs.')} {surname}, kellonaika on nyt {date('g:i a',time())}. Tiedätkö, missä ovat {sum(numPets,numKids)} lastasi ja lemmikkisi?
Here is an example of OK syntax with tooltips
Hei if(gender == 'M','Mr.','Mrs.') surname, kellonaika on nyt date('g:i a',time()). Tiedätkö, missä ovat sum(numPets,numKids) lastasi ja lemmikkisi?
Here is an example of OK syntax with tooltips
Hei Mr. Smith, kellonaika on nyt 6:07 am. Tiedätkö, missä ovat 3 lastasi ja lemmikkisi?
Here are common errors so you can see the tooltips
Muuttujat käytetty ennen määrittelyä: {notSetYet}
Tuntematon funktio: {iff(numPets>numKids,1,2)}
Tuntematon muuttuja: {sum(age,num_pets,numKids)}
Väärä parametrien määrä: {sprintf()},{if(1,2)},{date()}
Vain luettavien muuttujien sijoitus:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Epätasapainoiset sulkeet: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Tässä on yleisiä virheitä, jotta näet työkaluvihjeet
Muuttujat, joita käytetään ennen niiden määrittelyä: notSetYet
Tuntematon funktio: iff(numPets > numKids,1,2)
Tuntematon muuttuja: sum(age,num_pets,numKids)
Väärä määrä parametreja: sprintf(),if(1,2),date()
Vain luku -muuttujien arvon muuttaminen:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Epätasapainoiset sulkeet: pow(3,4,(pow(3,4),pow(3,4))
Tässä on yleisiä virheitä, jotta näet työkaluvihjeet
Muuttujat, joita käytetään ennen niiden määrittelyä: notSetYet
Tuntematon funktio: iff(numPets > numKids,1,2)
Tuntematon muuttuja: sum(age,num_pets,numKids)
Väärä määrä parametreja: sprintf(),if(1,2),date()
Vain luku -muuttujien arvon muuttaminen:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Epätasapainoiset sulkeet: pow(3,4,(pow(3,4),pow(3,4))
Tässä on osa tukemattomasta syntaksista
Ei tukea merkeille '++', '--', '%',';': {min(++age, --age,age % 2);}
Ei myöskään merkeille '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Ei myöskään taulukoille: {name[2], name['mine']}
Tässä on osa tukemattomasta syntaksista
Ei tukea merkeille '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Ei myöskään merkeille '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Ei myöskään taulukoille: name [ 2 ] ,name [ 'mine' ]
Tässä on osa tukemattomasta syntaksista
Ei tukea merkeille '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Ei myöskään merkeille '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Ei myöskään taulukoille: name [ 2 ] ,name [ 'mine' ]


Räätälöintiesimerkit

"Hyvä {Mr}/{Mrs} Smith..."

Käytä if()-funktiota valitaksesi ehdollisesti, näytetäänkö 'Mr.' vai 'Mrs.'.

Syntaksi on if(test,do_if_true,do_if_false).

# Koodi Kysymys Tyyppi
1 gender Mikä on sukupuolesi? Sukupuoli
2 example1 Hyvä {if(gender=='M','Mr.','Mrs.')} Smith, ... Pitkä vapaateksti



Kuten alla näkyy, "Mr" ja "Mrs" räätälöidään sen mukaan, minkä vastaajan valitsee vastaukseksi kysymykseen "gender".



"Hyvä {Mr}/{Mrs} Smith..." sähköpostikutsussa

Voit käyttää yllä olevaa esimerkkiä sähköpostikutsussa käyttämällä token-taulukon attribuutteja. Käytä if()-funktiota valitaksesi, käytetäänkö sähköpostissa 'Mr.' vai 'Mrs.'.


Syntaksi on "if(test,do_if_true,do_if_false)".

# Attribuutti Arvo
1 Sukunimi Smith
2 Sähköpostiosoite test@test.com
3 ATTRIBUTE_2 M


Sähköpostikutsun teksti:

Dear {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

you have been invited to participate in a survey:

https:/...



Sähköpostin näkymä:


Laskenta- ja arvioesimerkit

Laske arvioarvot suorituksen aikana ja tallenna tulokset kyselyn tietoihin

Tämä esimerkki käyttää kaikkia EM:n ominaisuuksia, mukaan lukien relevanssia, räätälöintiä ja yhtälö-kysymystyyppiä.

Se näyttää myös, että kaikki nämä ominaisuudet toimivat JavaScriptillä, joten jos sivulla on näitä ominaisuuksia, sivu muuttuu dynaamisesti, kun vastaajat antavat ja muuttavat vastauksiaan.

# Koodi Kysymys Tyyppi Relevanssi
1 numKids Kuinka monta lasta sinulla on? Numeerinen syöte 1
2 kid1 Kuinka vanha esikoisesi on? Numeerinen syöte numKids >= 1
3 kid2 Kuinka vanha toinen lapsesi on? Numeerinen syöte numKids >= 2
4 kid3 Kuinka vanha kolmas lapsesi on? Numeerinen syöte numKids >= 3
5 kid4 Kuinka vanha neljäs lapsesi on? Numeerinen syöte numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} Yhtälö 1
7 kidSummary Sanoit, että sinulla on {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} Tekstin näyttö 1


Voit ladata tämän esimerkin napsauttamalla seuraavaa linkkiä: Arvioesimerkkikysely.


Alla näet kuvakaappauksia edustavista kysymyksistä. Kuten huomaat, EM korostaa syntaksin värein kaikki kentät, jotka voivat sisältää räätälöintiä. Tässä näet esimerkkejä relevanssin, Yhtälö-kysymystyypin ja kysymyksen sisäisten korvausten syntaksikorostuksesta. Korvauksia voi käyttää myös ohjeessa, ryhmän otsikon näytössä, tervetuloviestissä ja loppuviestissä.

Seuraavassa esimerkissä relevanssi on {numKids >= 2), joten kysymys näkyy vain, jos vastaaja ilmoittaa, että hänellä on vähintään kaksi lasta.



Alla näet, että jokaiseen muuttujaan on liitetty jälkiliite .NAOK. Tämä johtuu siitä, miten EM tukee porrastettua relevanssia. Ilman .NAOK-jälkiliitettä summa laskettaisiin vain, jos vastaaja ilmoittaisi, että hänellä on 4 lasta (eli jos kaikki muuttujat ovat relevantteja). .NAOK-jälkiliitteen käyttö tarkoittaa, että haluamme laskea summan, vaikka kaikki muuttujat tai osa niistä olisivat epärelevantteja (eli "Ei sovellettavissa" (NA) on kunnossa (OK)).

Attribuutti .NAOK vaikuttaa kuitenkin vain siihen, välitetäänkö muuttujat EM:lle. Jos vastaaja ilmoittaa aluksi, että hänellä on 3 lasta, ja syöttää kunkin iän, mutta muuttaakin sitten mielensä ja ilmoittaa lapsia olevan 2, emme halua nähdä kolmen syötetyn arvon summaa, koska kolmas lapsi ei tässä tapauksessa enää ole "ei sovellettavissa":



Jokainen erillinen lauseke on merkitty ruskeankeltaisella taustavärillä. Kuten näet, tässä on kolme erillistä lauseketta. Viimeinen niistä sisältää viestin, joka näytetään ehdollisesti vain, jos henkilöllä on useampi kuin yksi lapsi.



Seuraavaksi näet kuvakaappauksia kyselystä käytössä.

Kun avaat sivun ensimmäisen kerran, näet tämän. Huomaa, että siinä lukee "You have 0 children" eikä "You have 0 child".



Jos muutan lasten lukumääräksi 1, näkymä muuttuu heti tällaiseksi, vaikka olemme samalla sivulla:



Huomaa, että kielioppi on nyt oikein: "You have 1 child".

Nyt muutan lasten lukumääräksi 3, ja näkymä muuttuu heti tällaiseksi.

Huomaa, että alareunassa näkyy nyt ehdollinen viesti: "The sum of ages of your first 3 kids is 0.".



Nyt syötän kuvitteellisten lasteni iät, ja saan tällaisen näkymän, jossa iät on laskettu yhteen:



Myös tässä pistemäärä ja näkymä päivittyvät heti arvoja syötettäessä, joten tämän avulla voit näyttää arviopistemäärän kertyvän yhteissumman.


Nyt muutan lasten lukumääräksi 2. Näkymä on muuttunut tällaiseksi:



Huomaa, että vaikka olin syöttänyt kolmannelle lapselle arvon 5,5, raportti laskee nyt yhteen vain kahden ensimmäisen lapsen arvot.

Syynä on se, että kolmas arvo on nyt epärelevantti, ja EM jättää epärelevantit arvot aktiivisesti huomiotta.

Jos muuttaisin lasten lukumääräksi takaisin 3, näkisin jälleen syöttämäni arvon 5,5. Sivulle syöttämiäni tietoja ei siis menetetä.

Jos kuitenkin siirryn Seuraava sivu- tai Edellinen sivu -painikkeella toiselle sivulle, kaikki epärelevantit arvot tyhjennetään (NULL) istunnosta ja tietokannasta. Jos siis jättäisin arvoksi 2, siirtyisin seuraavalle sivulle ja palaisin sitten takaisin ilmoittamaan, että lapsia onkin 3, en enää näkisi ikää 5,5.


Syötä tietoja ja katso dynaamisesti muuttuvaa raporttia syötetyistä tiedoista samalla sivulla

Tämä esimerkki esittelee LimeSurveyn räätälöintiprosessin.

Voit ladata tämän esimerkin napsauttamalla seuraavaa linkkiä: Dynaamisesti muuttuva kyselyesimerkki.

Näin sivu näyttää aluksi. Näet vain kysymyksen, jossa kysytään, missä kaupungissa asut:



Kun alat kirjoittaa vastausta, mukautusprosessi käynnistyy myös:


Kun annat vastauksia, sivun alareunan taulukko päivittyy ja näyttää vastaustesi vastauskoodit ja arvot.


Yleisiä virheenkorjausesimerkkejä

Sisäkkäiset if()-lauseet (ehdollinen logiikka)

EM tukee funktiota "if(test,do_if_true,do_if_false)", jonka avulla voit toteuttaa ehdollista logiikkaa tai mukautusta. Funktion voi sisäkkäistää vastaamaan rakennetta "if { } else if { } else { }". EM ilmoittaa, jos sulkeet eivät täsmää (esimerkiksi päättävä oikea sulje puuttuu) tai jos oikeita sulkeita on ylimääräisiä. Kun kirjoitat pitkiä sisäkkäisiä if-lauseita, laske sulkeet, tallenna lauseke, tarkista syntaksivirheet ja korjaa mahdolliset virheet. Tarkastellaan yhdessä alla olevaa esimerkkiä.

Alla käytetyn kysymysryhmän voi ladata täältä: Tailoring survey example.lsg


Ensin, kun mitään ei ole syötetty, näet vain tekstin "Heippa."



Jos syötät nimen, teksti on "Heippa {name}."



Jos syötät iän, saat mukautetun viestin sen mukaan, onko henkilö esikouluikäinen lapsi vai ei:



Kouluikäinen, teini-ikäinen tai aikuinen. Tässä on nimetön teini-ikäinen:



Tässä on ryhmän logiikkatiedosto. Kuten "if-pohjaisesta" kysymyksestä näet, sisäkkäiset if-lauseet perustuvat henkilön ikään.



Kun muokkaat tätä kysymystä ensimmäistä kertaa, sulkeiden määrä on todennäköisesti jossain vaiheessa väärä. Näin käy, jos sulkeita on liian vähän:



Jos viet hiiren punaisella laatikolla ympäröidyn sanan "if" päälle, näet viestin "Parentheses not balanced". Tässä tapauksessa tekstin "already an adult!" jälkeen pitäisi olla neljä päättävää sulkua, mutta niitä on vain kolme.

Jos taas oikeita sulkeita on ylimääräinen, se ympäröidään punaisella laatikolla, kuten tässä:



Kun muokkaat kysymystä, se näyttää tältä: