Actions

ExpressionScript Engine – Кратко ръководство за стартиране

From LimeSurvey Manual

Revision as of 09:40, 23 November 2023 by Maren.fritz (talk | contribs)


Ръководство за бърз старт

В рамките на LimeSurvey можете допълнително да персонализирате анкетите си чрез използването на ExpressionScript (накратко: ES). Странична бележка: „ExpressionScript беше наречен Expression Manager (EM) в по-ранна версия. Ако сте чели някъде Expression Manager, това е просто старото име на ES."

ES може да се използва за указване на следното:

  1. Навигация/Разклоняване - позволява на отговорите на респондента да променят реда, в който се показват въпросите;
  2. Скрояване/Разклоняване - помага ви да формулирате въпроса (като препращане към предишни отговори или свързване на изречения въз основа на възрастта или пола на вашите субекти) или как да генерирате персонализирани отчети (като оценки за оценка или персонализирани съвети);
  3. Валидиране - гарантира, че отговорите преминават определени критерии, като минимални и максимални стойности или определен модел на въвеждане.

ES предоставя интуитивен начин за определяне на логиката за всяка от тези функции. Почти всичко, което можете да напишете като стандартно математическо уравнение, е валиден израз.

В момента ES предоставя достъп до 70 функции и може лесно да бъде разширен, за да поддържа повече. Той също така ви позволява да осъществявате достъп до вашите променливи, като използвате четими за човека имена на променливи (вместо SGQA имена).

Предстоящите раздели показват основните места, където се използва ES.


Уместност (Контролиране на навигация/разклоняване)

Някои проучвания използват "Goto Logic", така че ако отговорите на Въпрос 1 с опция C, ще бъдете пренасочени към Въпрос 5. Този подход е много ограничен, тъй като е трудно да се потвърди. Освен това лесно се разваля, когато трябва да пренаредите въпросите. От друга страна, ES използва булеви уравнения за релевантност, за да посочи всички условия, при които даден въпрос може да е валиден. Ако въпросът е уместен, той се показва, в противен случай не е приложим и стойността „NULL“ се съхранява в базата данни.

Забележка: Това е подобно на това, което може да се направи чрез Редактор на условия, но ES ви позволява лесно да зададете много по-сложни и мощни критерии (и ви позволява да използвате името на променливата вместо SGQA идентификатори).




За да разберем по-добре концепцията за уместност, нека се съсредоточим върху следното проучване, което изчислява индекса на телесна маса (ИТМ) на респондентите в проучването. За да го изтеглите, щракнете върху следната връзка: Пример за изследване на индекса на телесна маса.

Уравнението за релевантност е показано по-долу в колоната Релевантност след името на променливата. Стойностите за релевантност на теглото, теглото_единици, височината и височината са всички 1 (стойност по подразбиране), което означава, че тези въпроси винаги се показват. Уместността за ИТМ обаче е {!is_empty(height) и !is_empty(weight)}, което означава, че ИТМ ще бъде изчислен само ако субектът въведе стойност както за височината, така и за теглото (по този начин се избягва рискът от получаване на нулева грешка ). Освен това въпросът „Отчет“ се показва само ако респондентът отговори на четирите основни въпроса (височина, единици за височина, тегло, единици за тегло).



Файл:help.png Забележка: Изображението по-горе идва от логически файл на анкетата, който ви позволява да търсите синтактични грешки, преди да активирате анкетата.


Уместността се показва и може да се редактира, когато:

  • искате да видите/редактирате уместността на ниво въпрос
  • искате да видите/редактирате уместността на ниво група


Преглед/Редактиране на уместност на ниво въпрос

Това уравнение изчислява индекса на телесна маса (ИТМ). Пита се само дали човекът въвежда ръста и теглото си.



Това е екранът за редактиране на въпроса "ИТМ".



Обърнете внимание, че не използвате фигурните скоби, когато въвеждате уравнение за релевантност.


Преглед/редактиране на уместност на ниво група

Нека сега се съсредоточим върху друг пример - просто проучване от преброяване. За да го изтеглите, щракнете върху следната връзка: Пример за проучване при преброяване.

Първата страница пита колко души живеят с вас и съхранява това в променливата "cohabs". Тази страница се показва само ако имате повече от един съжител (показва се за втория съжител с вас). Също така, p2name, p2age. p2sum се показват само ако въпросът преди всеки от тях съдържа отговор.



Така че групата също има критерии за уместност на ниво въпрос, така че някои въпроси се появяват само ако сте отговорили на определени въпроси преди тях (напр. p2age се показва, ако е отговорено p2name). ES съчетава уместността на ниво група и въпрос за вас. 'Въпроси в група се задават само ако групата като цяло е подходяща. След това се задават само подмножеството въпроси в рамките на групата, които са подходящи.

Ето екранната снимка за редактиране на уместността на ниво група на Съжител 2:



Обърнете внимание, че не използвате фигурните скоби, когато въвеждате уравнение за релевантност.

Шиване/Пипинг

ES ви позволява лесно да правите просто и сложно условно шиене. Понякога просто се нуждаете от проста замяна, като да кажете: „Казахте, че сте купили [ продукт]. Какво ви хареса най-много в него?". Понякога имате нужда от условно заместване като " [ Г-н г-жа.] [ LastName], бихте ли искали да попълните нашата анкета?". В този случай искате да използвате "Mr. или г-жа" въз основа на пола на лицето. Друг път се нуждаете от дори по-сложно заместване (като например въз основа на математическо изчисление). ES поддържа всеки от тези типове шиене/тръбопроводи.


Условни уравнения

Примерът с индекса на телесна маса показва способността да се изчисли ИТМ на човек, дори когато му позволявате да въведе своята височина и тегло в две различни единици (cms срещу инчове и kgs срещу lbs):



В този случай теглото kg е {if(weightunits == "kg", тегло, тегло * 0,453592)}. Тази функция "if()" означава, че ако субектът въведе теглото в килограми, използвайте тази стойност, в противен случай умножете въведената стойност (паунда е алтернативата) по 0,453592, за да я преобразувате в килограми. Променливата heightm използва подобен подход за изчисляване на височината на човека в метри (ръст в см/100), дори ако той е въвел височината си в инчове (1 метър=3,28084 инча).

ИТМ се изчислява като: {теглоkg / (височинаm * височинаm)}.

И накрая, докладът условно приспособява съобщението за субекта, като й казва какво е въвел. (напр. „Казахте, че сте висок 2 метра и тежите 70 кг.“)

В изображението по-долу теглото използва вложени изрази „if()“, за да категоризира лицето като с поднормено тегло до тежко затлъстяване. Можете да видите уравнението му, като проверите логиката му:



От прозореца за редактиране на този въпрос можете да видите две неща:

  1. Tailoring трябва да огражда изразите с фигурни скоби
  2. Изразите могат да обхващат няколко реда, ако, както в този случай, искате да улесните четенето на вложена условна логика.



Персонализирани въпроси, отговори и отчети

Файл:help.png Забележка: Динамичното приспособяване може да не работи, ако опциите за отговор са налични в полетата за избор на същата страница с въпроси. Това се дължи на факта, че шивашките вложки a таг, който не е валиден в опциите за избор.

Докладът за ИТМ изглежда така:



Ето прозореца за редактиране на същия въпрос.



Всичко във фигурни скоби се третира като израз, като е синтаксисно маркирано (цветно кодирано) в предишното изображение. Ако имате правописни грешки (като грешно изписани или недефинирани имена на променливи или функции), ES ще покаже грешка. В нашия пример по-долу:

  • heightunit.shown е недефинирано име на променлива (това всъщност е heightunits.shown) и
  • "rnd()" е недефинирана функция (правилното име на функцията е "round()" ).

И в двата случая грешките са разположени в червено поле, за да ги забележите и поправите по-лесно.



Можете също така да видите, че можете бързо да създавате сложни отчети, като например таблица с въведени стойности или персонализирани съвети.

Моля, не забравяйте, че всяко приспособяване трябва да обгражда изрази с фигурни скоби, така че LimeSurvey да знае кои части от въпроса са свободен текст и кои трябва да бъдат анализирани от ExpressionScript двигателя.


Потвърждение

ES контролира как работят повечето от разширените опции за въпроси. Тези контролни аспекти като минимален/максимален брой отговори, минимални/максимални индивидуални стойности, минимални/максимални сумарни стойности и проверка дали въведените стойности съответстват на определени модели на низове. Всяка стойност в едно от тези полета се счита за израз, така че можете да имате минимални/максимални критерии със сложни условни връзки с други въпроси.

Във всички тези случаи, тъй като атрибутът за разширен въпрос винаги се счита за израз, вие не използвате фигурни скоби, когато го посочвате.

Страницата примерни анкети показва много работещи примери, съдържащи различни изрази за валидиране.

ExpressionScript - представяне

За да научите повече за ExpressionScript и как можете да използвате различни изрази, за да подобрите вашето проучване, моля, щракнете върху следната връзка.