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-moottori - Pikaopas

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 Engine - Quick start guide and the translation is 100% complete.


Pikaopas

LimeSurveyssä voit mukauttaa kyselyitäsi edelleen ExpressionScriptin (lyhyesti ES) avulla. Huomautus: "ExpressionScriptin nimi oli aiemmissa versioissa Expression Manager (EM). Jos näet jossain nimen Expression Manager, se on vain ES:n vanha nimi."

ES:n avulla voidaan määrittää seuraavat asiat:

  1. Navigointi/haarautuminen - antaa vastaajan vastausten muuttaa kysymysten näyttöjärjestystä;
  2. Räätälöinti/Piping - auttaa muotoilemaan kysymyksen (esimerkiksi viittaamalla aiempiin vastauksiin tai taivuttamalla lauseita kohteiden iän tai sukupuolen mukaan) tai luomaan mukautettuja raportteja (kuten arviopisteitä tai räätälöityjä neuvoja);
  3. Vahvistus - varmistaa, että vastaukset täyttävät tietyt ehdot, kuten vähimmäis- ja enimmäisarvot tai tietyn syötemallin.

ES tarjoaa intuitiivisen tavan määrittää logiikka jokaiselle näistä toiminnoista. Lähes mikä tahansa tavallisena matemaattisena yhtälönä kirjoitettava lauseke on kelvollinen lauseke.

ES tarjoaa tällä hetkellä käyttöösi 70 funktiota, ja sitä voidaan helposti laajentaa tukemaan useampia. Sen avulla voit myös käyttää muuttujiasi ihmisen luettavissa olevilla muuttujien nimillä (SGQA-nimien sijaan).

Seuraavissa osioissa esitellään tärkeimmät paikat, joissa ES:ää käytetään.


Relevanssi (navigoinnin/haarautumisen hallinta)

Joissakin kyselyissä käytetään "Goto-logiikkaa", jossa esimerkiksi jos vastaat kysymykseen Question1 vaihtoehdolla C, sinut ohjataan kysymykseen Question5. Tämä tapa on hyvin rajoittunut, koska sen validointi on vaikeaa. Lisäksi se rikkoutuu helposti, kun kysymykset täytyy järjestää uudelleen. ES puolestaan käyttää Boolen relevanssiyhtälöitä määrittämään kaikki ehdot, joissa kysymys voi olla voimassa. Jos kysymys on relevantti, kysymys näytetään. Muussa tapauksessa se ei ole sovellettavissa, ja tietokantaan tallennetaan arvo "NULL".

Huomautus: Tämä on samankaltaista kuin ehtoeditorilla tehtävissä oleva, mutta ES:n avulla voit helposti määrittää paljon monimutkaisempia ja tehokkaampia ehtoja (ja käyttää muuttujan nimeä SGQA-tunnisteiden sijaan).




Ymmärtääksesi relevanssin käsitteen paremmin tarkastellaan seuraavaa kyselyä, joka laskee vastaajien painoindeksin (BMI). Voit ladata sen napsauttamalla seuraavaa linkkiä: Painoindeksikyselyn esimerkki.

Relevanssiyhtälö näkyy alla sarakkeessa Relevanssi muuttujan nimen jälkeen. Muuttujien weight, weight_units, height ja height_units relevanssiarvot ovat kaikki 1 (oletusarvo), mikä tarkoittaa, että nämä kysymykset näytetään aina. BMI:n relevanssi on kuitenkin {!is_empty(height) and !is_empty(weight)}, mikä tarkoittaa, että BMI lasketaan vain, jos aihe antaa arvon sekä pituudelle että painolle (näin vältetään nollalla jaon virheen riski). Lisäksi kysymys "Report" näytetään vain, jos vastaaja vastaa kaikkiin neljään pääkysymykseen (height, heightunits, weight, weightunits).



Huomautus: Yllä oleva kuva on peräisin kyselyn logiikkatiedostosta, jonka avulla voit etsiä syntaksivirheitä ennen kyselyn aktivointia.


Relevanssi näytetään ja on muokattavissa, kun:

  • haluat tarkastella/muokata kysymystasoista relevanssia
  • haluat tarkastella/muokata ryhmätasoista relevanssia


Kysymystasoisen relevanssin tarkastelu / muokkaus

Tämä yhtälö laskee painoindeksin (BMI). Siitä kysytään vain, jos henkilö antaa pituutensa ja painonsa.



Tämä on "BMI"-kysymyksen muokkausnäkymä.



Huomaa, että aaltosulkeita ei käytetä relevanssiyhtälöä syötettäessä.


Ryhmätasoisen relevanssin tarkastelu / muokkaus

Tarkastellaan nyt toista esimerkkiä - yksinkertaista väestölaskentakyselyä. Voit ladata sen napsauttamalla seuraavaa linkkiä: Väestölaskentakyselyn esimerkki.

Ensimmäisellä sivulla kysytään, kuinka monta ihmistä asuu kanssasi, ja tallennetaan tieto muuttujaan "cohabs". Tämä sivu näytetään vain, jos kanssasi asuu useampi kuin yksi henkilö (se näytetään toiselle kanssasi asuvalle henkilölle). Lisäksi p2name, p2age ja p2sum näytetään vain, jos niitä edeltävään kysymykseen on annettu vastaus.



Ryhmällä on siis myös kysymystasoisia relevanssiehtoja, joiden vuoksi jotkin kysymykset näkyvät vain, jos olet vastannut tiettyihin aiempiin kysymyksiin (esim. p2age näytetään, jos p2name on vastattu). ES yhdistää ryhmä- ja kysymystasoisen relevanssin puolestasi. Ryhmän kysymyksiä kysytään vain, jos ryhmä kokonaisuutena on relevantti. Tämän jälkeen kysytään vain ne ryhmän kysymykset, jotka ovat relevantteja.

Tässä on kuvakaappaus ryhmän Cohabitant 2 ryhmätasoisen relevanssin muokkauksesta:



Huomaa, että aaltosulkeita ei käytetä relevanssiyhtälöä syötettäessä.

Räätälöinti/Piping

ES:n avulla voit helposti tehdä sekä yksinkertaista että monimutkaista ehdollista räätälöintiä. Joskus tarvitset vain yksinkertaisen korvauksen, kuten "Kerroit ostaneesi [Tuote]. Mistä pidit siinä eniten?". Joskus tarvitset ehdollisen korvauksen, kuten "[Herra/Rouva] [Sukunimi], olisitko valmis vastaamaan kyselyymme?". Tässä tapauksessa haluat käyttää sanaa "Herra" tai "Rouva" henkilön sukupuolen perusteella. Toisinaan tarvitset vielä monimutkaisemman korvauksen (esimerkiksi matemaattiseen laskentaan perustuvan). ES tukee kaikkia näitä räätälöinnin/pipingin tyyppejä.


Ehdolliset yhtälöt

Painoindeksiesimerkki osoittaa, miten henkilön painoindeksi (BMI) voidaan laskea, vaikka hän syöttäisi pituutensa ja painonsa kahdella eri yksiköllä (cm vs. tuumat ja kg vs. paunat):



Tässä tapauksessa weightkg on {if(weightunits == "kg", weight, weight * 0.453592)}. Tämä "if()"-funktio tarkoittaa, että jos vastaaja syöttää painon kilogrammoina, käytetään kyseistä arvoa. Muussa tapauksessa syötetty arvo (vaihtoehtona on pauna) kerrotaan luvulla 0.453592, jolloin se muunnetaan kilogrammoiksi. Muuttuja heightm käyttää samanlaista tapaa henkilön pituuden laskemiseen metreinä (pituus senttimetreinä/100), vaikka hän olisi syöttänyt pituutensa tuumina (1 metri = 3.28084 tuumaa).

BMI lasketaan seuraavasti: {weightkg / (heightm * heightm)}.

Lopuksi raportti räätälöi viestin ehdollisesti vastaajalle ja kertoo, mitä hän syötti. (esim. "Kerroit olevasi 2 metriä pitkä ja painavasi 70 kg.")

Alla olevassa kuvassa weightstatus käyttää sisäkkäisiä "if()"-lauseita luokitellakseen henkilön alipainoisesta vaikeasti lihavaan. Näet sen yhtälön tarkistamalla sen logiikan:



Tämän kysymyksen muokkausikkunasta näet kaksi asiaa:

  1. Räätälöinnissä lausekkeet on ympäröitävä aaltosulkeilla
  2. Lausekkeet voivat jatkua usealle riville, jos, kuten tässä tapauksessa, haluat helpottaa sisäkkäisen ehdollisen logiikan lukemista.



Räätälöidyt kysymykset, vastaukset ja raportit

Huomautus: Dynaaminen räätälöinti ei välttämättä toimi, jos vastausvaihtoehdot esitetään valintaruuduissa (select box) samalla kysymyssivulla. Tämä johtuu siitä, että räätälöinti lisää <span>-tagin, joka ei ole kelvollinen valintavaihtoehtojen sisällä.

BMI-raportti näyttää tältä:



Tässä on saman kysymyksen muokkausikkuna.



Kaikki aaltosulkeiden sisällä oleva käsitellään lausekkeena, ja se on korostettu syntaksivärein (värikoodattu) edellisessä kuvassa. Jos tekstissä on kirjoitusvirheitä (kuten väärin kirjoitettuja tai määrittelemättömiä muuttujien tai funktioiden nimiä), ES näyttää virheen. Alla olevassa esimerkissä:

  • heightunit.shown on määrittelemätön muuttuja (oikea nimi on heightunits.shown) ja
  • "rnd()" on määrittelemätön funktio (oikea funktion nimi on "round()").

Molemmissa tapauksissa virheet on merkitty punaiseen laatikkoon, jotta ne on helpompi havaita ja korjata.



Näet myös, että voit nopeasti luoda monimutkaisia raportteja, kuten taulukon syötetyistä arvoista tai räätälöityjä neuvoja.

Muista, että kaikessa räätälöinnissä lausekkeet on ympäröitävä aaltosulkeilla, jotta LimeSurvey tietää, mitkä kysymyksen osat ovat vapaata tekstiä ja mitkä ExpressionScript-moottorin tulee käsitellä.


Validointi

ES ohjaa sitä, miten useimmat kysymysten lisäasetukset toimivat. Niillä hallitaan esimerkiksi vastausten vähimmäis- ja enimmäismääriä, yksittäisten arvojen vähimmäis- ja enimmäisarvoja, summien vähimmäis- ja enimmäisarvoja sekä sitä, että syötetyt arvot vastaavat määritettyjä merkkijonomalleja. Mikä tahansa näissä kentissä oleva arvo käsitellään lausekkeena, joten voit määrittää vähimmäis- ja enimmäisehtoja, jotka riippuvat monimutkaisesti muista kysymyksistä.

Kaikissa näissä tapauksissa, koska kysymyksen lisäattribuutti käsitellään aina lausekkeena, aaltosulkeita ei käytetä sitä määritettäessä.

Esimerkkikyselyt-sivulla on monia toimivia esimerkkejä, jotka sisältävät erilaisia validointilausekkeita.

ExpressionScript - esittely

Jos haluat tietää lisää ExpressionScriptistä ja siitä, miten voit parantaa kyselyäsi erilaisilla lausekkeilla, napsauta seuraavaa linkkiä.