x

Основные главы

  1. LimeSurvey Cloud и LimeSurvey CE: сравнение
  2. Краткое руководство по началу работы - LimeSurvey 3.0+
  3. Установка - LimeSurvey CE
  4. Как разработать хороший опрос (руководство)
  5. Начиная
  6. Администрирование LimeSurvey
  7. Опросы - Вступление
  8. Настройки опроса
  9. Меню опроса
  10. Структура опроса
  11. Вопросы — введение
  12. Группы вопросов - введение
  13. Опросы - управление
  14. Параметры панели инструментов опроса
  15. Многоязычный опрос
  16. Движок ExpressionScript — краткое руководство
  17. Не классифицированы и расширенные функции
  18. ЧаВо
  19. Устранение неполадок
  20. Обходные пути
  21. Лицензия
  22. Журнал изменений версий
  23. Плагины
 Actions

Движок ExpressionScript — краткое руководство

From LimeSurvey Manual

Эта страница, возможно, переведена машинным способом и может содержать ошибки. Показать английский оригинал · Улучшить этот перевод
This page is a translated version of the page ExpressionScript Engine - Quick start guide and the translation is 100% complete.


Краткое руководство

В 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).




Чтобы лучше понять концепцию условия, рассмотрим следующий опрос, который вычисляет индекс массы тела (ИМТ) респондентов. Чтобы скачать его, перейдите по следующей ссылке: пример опроса «Индекс массы тела».

Уравнение условия показано ниже в столбце Условие после имени переменной. Значения условия для weight, weight_units, height и height_units равны 1 (значение по умолчанию), то есть эти вопросы отображаются всегда. Однако условие для BMI — {!is_empty(height) and !is_empty(weight)}, что означает, что ИМТ будет вычисляться, только если участник введёт значения и роста, и веса (это позволяет избежать ошибки деления на ноль). Кроме того, вопрос «Report» отображается, только если респондент ответил на все четыре основных вопроса (height, heightunits, weight, weightunits).



Примечание: Изображение выше взято из файла логики опроса, который позволяет искать синтаксические ошибки перед активацией опроса.


Условие отображается и доступно для редактирования, когда:

  • вы хотите просмотреть/изменить условие на уровне вопроса
  • вы хотите просмотреть/изменить условие на уровне группы


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

Это уравнение вычисляет индекс массы тела (ИМТ). Вопрос задаётся, только если человек вводит свой рост и вес.



Это экран редактирования вопроса «BMI».



Обратите внимание: при вводе уравнения условия фигурные скобки не используются.


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

Рассмотрим теперь другой пример — простой опрос-перепись. Чтобы скачать его, перейдите по следующей ссылке: пример опроса-переписи.

На первой странице спрашивается, сколько человек живёт с вами, и это значение сохраняется в переменной «cohabs». Эта страница отображается, только если с вами проживает более одного человека (она показывается для второго проживающего с вами человека). Кроме того, p2name, p2age, p2sum отображаются, только если предыдущий вопрос для каждого из них содержит ответ.



Таким образом, у группы также есть критерии условия на уровне вопросов: некоторые вопросы появляются, только если вы ответили на определённые вопросы перед ними (например, p2age отображается, если был дан ответ на p2name). ES автоматически объединяет условия уровня группы и уровня вопроса. Вопросы в группе задаются, только если группа в целом актуальна. После этого задаются только те вопросы группы, которые актуальны.

Вот снимок экрана редактирования условия на уровне группы для Cohabitant 2:



Обратите внимание: при вводе уравнения условия фигурные скобки не используются.

Адаптация текста/подстановка (Tailoring/Piping)

ES позволяет легко выполнять как простую, так и сложную условную адаптацию текста. Иногда нужна простая подстановка, например: «Вы сказали, что приобрели [Продукт]. Что вам больше всего понравилось в нём?». Иногда требуется условная подстановка, например: «[Г-н/Г-жа] [Фамилия], не согласитесь ли вы пройти наш опрос?». В этом случае нужно использовать «г-н» или «г-жа» в зависимости от пола человека. В других случаях нужна ещё более сложная подстановка (например, на основе математического вычисления). ES поддерживает все эти виды адаптации текста и подстановки.


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

Пример с индексом массы тела показывает, как можно вычислить ИМТ человека, даже если он вводит рост и вес в разных единицах измерения (см или дюймы, кг или фунты):



В данном случае weightkg равно {if(weightunits == "kg", weight, weight * 0.453592)}. Функция «if()» означает: если респондент указал вес в килограммах, используется это значение, в противном случае введённое значение (альтернатива — фунты) умножается на 0.453592 для перевода в килограммы. Переменная heightm вычисляет рост человека в метрах (рост в см/100) по аналогичному принципу, даже если рост был введён в дюймах (1 метр = 3.28084 дюйма).

ИМТ вычисляется так: {weightkg / (heightm * heightm)}.

Наконец, отчёт условно адаптирует сообщение для респондента, сообщая, что он ввёл. (Например: «Вы сказали, что ваш рост 2 метра, а вес 70 кг».)

На изображении ниже weightstatus использует вложенные операторы «if()», чтобы отнести человека к категории от недостаточного веса до тяжёлого ожирения. Его уравнение можно увидеть, проверив его логику:



В окне редактирования этого вопроса видны две особенности:

  1. При адаптации текста выражения должны быть заключены в фигурные скобки.
  2. Выражения могут занимать несколько строк, если, как в данном случае, нужно упростить чтение вложенной условной логики.



Адаптированные вопросы, ответы и отчёты

Примечание: динамическая адаптация текста может не работать, если варианты ответов представлены в выпадающих списках на той же странице вопроса. Это связано с тем, что при адаптации вставляется тег <span>, который недопустим внутри элементов выпадающего списка.

Отчёт об ИМТ выглядит так:



Вот окно редактирования того же вопроса.



Всё, что находится в фигурных скобках, рассматривается как выражение и подсвечивается (выделяется цветом) на предыдущем изображении. Если есть опечатки (например, имена переменных или функций написаны с ошибкой или не определены), ES покажет ошибку. В нашем примере ниже:

  • heightunit.shown — неопределённое имя переменной (правильно heightunits.shown), и
  • «rnd()» — неопределённая функция (правильное имя функции — «round()»).

В обоих случаях ошибки выделены красной рамкой, чтобы их было легче заметить и исправить.



Кроме того, вы можете быстро создавать сложные отчёты, например таблицу введённых значений или персонализированные рекомендации.

Помните, что при адаптации текста все выражения должны быть заключены в фигурные скобки, чтобы LimeSurvey понимал, какие части вопроса являются обычным текстом, а какие должен обработать движок ExpressionScript.


Проверка

ES управляет работой большинства расширенных настроек вопросов. Они определяют, например, минимальное и максимальное количество ответов, минимальные и максимальные отдельные значения, минимальную и максимальную сумму значений, а также проверку соответствия введённых значений заданным шаблонам строк. Любое значение в этих полях считается выражением, поэтому можно задавать минимальные и максимальные критерии со сложными условными зависимостями от других вопросов.

Во всех этих случаях, поскольку расширенный атрибут вопроса всегда считается выражением, фигурные скобки при его указании не используются.

На странице примеров опросов приведено множество рабочих примеров с различными выражениями для проверки.

ExpressionScript — внешний вид

Чтобы узнать больше о ExpressionScript и о том, как использовать различные выражения для улучшения вашего опроса, перейдите по следующей ссылке.