Actions

Motor ExpressionScript: guía de inicio rápido

From LimeSurvey Manual

This page is a translated version of the page ExpressionScript Engine - Quick start guide and the translation is 100% complete.


Guía de inicio rápido

Dentro de LimeSurvey, puede personalizar aún más sus encuestas mediante el uso de ExpressionScript (abreviado: ES). Nota al margen: "ExpressionScript se llamaba Expression Manager (EM) en una versión anterior. Si lees Expression Manager en alguna parte, es solo el antiguo nombre de ES."

ES se puede utilizar para especificar lo siguiente:

  1. Navegación/Bramificación: permite que las respuestas de un encuestado cambien el orden en que se muestran las preguntas;
  2. Sastrería/Piping: le ayuda a formular la pregunta (como referirse a respuestas anteriores o conjugación de oraciones según la edad o el sexo de los sujetos) o cómo generar informes personalizados (como puntuaciones de evaluaciones o consejos personalizados);
  3. Validación: garantiza que las respuestas pasen ciertos criterios, como valores mínimos y máximos o un determinado patrón de entrada.

ES proporciona una forma intuitiva de especificar la lógica para cada una de esas funciones. Casi cualquier cosa que puedas escribir como una ecuación matemática estándar es una expresión válida.

Actualmente, ES proporciona acceso a 70 funciones y se puede ampliar fácilmente para admitir más. También le permite acceder a sus variables utilizando nombres de variables legibles por humanos (en lugar de SGQA nombres).

Las siguientes secciones muestran los principales lugares donde se utiliza el ES.


Relevancia (control de navegación/ramificación)

Algunas encuestas utilizan "Ir a lógica", de modo que si responde la Pregunta 1 con la opción C, será redirigido a la Pregunta 5. Este enfoque es muy limitado ya que es difícil validarlo. Además, se rompe fácilmente cuando hay que reordenar las preguntas. Por otro lado, ES utiliza Ecuaciones de relevancia booleana para especificar todas las condiciones bajo las cuales una pregunta podría ser válida. Si la pregunta es relevante, se muestra; de lo contrario, no es aplicable y el valor "NULL" se almacena en la base de datos.

Nota: Esto es similar a lo que se puede hacer a través del Editor de condiciones, pero ES le permite especificar fácilmente criterios mucho más complejos y poderosos (y le permite usar el nombre de la variable en lugar de identificadores SGQA).




Para comprender mejor el concepto de relevancia, centrémonos en la siguiente encuesta que calcula el índice de masa corporal (IMC) de los encuestados. Para descargarlo, haga clic en el siguiente enlace: Ejemplo de encuesta de índice de masa corporal.

La ecuación de relevancia se muestra a continuación en la columna Relevancia después del nombre de la variable. Los valores de relevancia de peso, unidades_peso, altura y unidades_altura son todos 1 (valor predeterminado), lo que significa que esas preguntas siempre se muestran. Sin embargo, la relevancia para el IMC es {!is_empty(altura) y !is_empty(peso)}, lo que significa que el IMC solo se calculará si el sujeto ingresa un valor tanto para la altura como para el peso (evitando así el riesgo de obtener un error de cero). Además, la pregunta "Informe" solo se muestra si el encuestado responde las cuatro preguntas principales (altura, unidades de altura, peso, unidades de peso).



Archivo:help.png Nota: La imagen de arriba proviene del archivo lógico de encuesta que le permite buscar errores de sintaxis antes de activar la encuesta.


La relevancia se muestra y se puede editar cuando:

  • deseas ver/editar la relevancia a nivel de pregunta
  • deseas ver/editar la relevancia a nivel de grupo


Ver/Editar la relevancia a nivel de pregunta

Esta ecuación calcula el índice de masa corporal (IMC). Sólo se pregunta si la persona ingresa su altura y peso.



Esta es la pantalla de edición para la pregunta "IMC".



Tenga en cuenta que no utiliza llaves cuando ingresa una ecuación de relevancia.


Ver/Editar la relevancia a nivel de grupo

Centrémonos ahora en otro ejemplo: una encuesta censal sencilla. Para descargarlo, haga clic en el siguiente enlace: Ejemplo de encuesta del censo.

La primera página pregunta cuántas personas viven con usted y lo almacena en la variable "cohabs". Esta página solo se muestra si tienes más de un conviviente (se muestra para la segunda persona que convive contigo). Además, p2name, p2age. p2sum se muestran solo si la pregunta anterior a cada una de ellas contiene una respuesta.



Por lo tanto, el grupo también tiene criterios de relevancia a nivel de pregunta, de modo que algunas preguntas solo aparecen si usted respondió ciertas preguntas antes (por ejemplo, se muestra p2age si se respondió p2name). ES combina la relevancia a nivel de grupo y de pregunta para usted. Las preguntas en un grupo sólo se hacen si el grupo en su conjunto es relevante. Luego, sólo se formula el subconjunto de preguntas dentro del grupo que sean relevantes".

Aquí está la captura de pantalla para editar la relevancia a nivel de grupo de Cohabitant 2:



Tenga en cuenta que no utiliza llaves cuando ingresa una ecuación de relevancia.

Sastrería/Tuberías

ES le permite realizar fácilmente adaptaciones condicionales simples y complejas. A veces sólo necesitas una simple sustitución, como decir: "Dijiste que compraste [ Producto]. ¿Qué es lo que más te gustó de esto?". A veces necesitas una sustitución condicional como " [ SR Sra.] [ Apellido], ¿estaría dispuesto a completar nuestra encuesta?". En este caso, desea utilizar "Mr. o Sra." según el género de la persona. Otras veces necesita una sustitución aún más compleja (como basada en un cálculo matemático). ES admite cada uno de estos tipos de sastrería/tubería.


Ecuaciones condicionales

El ejemplo del índice de masa corporal muestra la capacidad de calcular el IMC de una persona, incluso permitiéndole ingresar su altura y peso en dos unidades diferentes (cm frente a pulgadas y kg frente a libras):



En este caso, peso kg es {if(pesounidades == "kg", peso, peso * 0,453592)}. Esta función "if()" significa que si el sujeto ingresa el peso usando kilogramos, use ese valor; de lo contrario, multiplique el valor ingresado (libras es la alternativa) por 0,453592 para convertirlo a kilogramos. La variable altura utiliza un método similar para calcular la altura de la persona en metros (altura en cm/100), incluso si ha ingresado su altura en pulgadas (1 metro = 3,28084 pulgadas).

El IMC se calcula como: {pesokg / (alturam * alturam)}.

Por último, el informe adapta condicionalmente el mensaje al sujeto y le dice lo que ingresó. (por ejemplo, "Dijiste que mides 2 metros y pesas 70 kg").

En la imagen siguiente, Weightstatus utiliza declaraciones "if()" anidadas para clasificar a la persona desde bajo peso hasta obesidad severa. Puedes ver su ecuación comprobando su lógica:



Desde la ventana de edición de esta pregunta, puede ver dos cosas:

  1. ¡La adaptación debe rodear las expresiones con llaves
  2. Las expresiones pueden abarcar varias líneas si, como en este caso, desea que sea más fácil leer el Lógica condicional anidada.



Preguntas, respuestas e informes personalizados

Nota: Es posible que la personalización dinámica no funcione si las opciones de respuesta están disponibles en cuadros de selección en la misma página de preguntas. Esto se debe al hecho de que la sastrería inserta un etiqueta que no es válida dentro de las opciones de selección.

El informe del IMC se ve así:



Aquí está la ventana de edición para la misma pregunta.



Todo lo que esté entre llaves se trata como una expresión y se resalta con sintaxis (codificada por colores) en la imagen anterior. Si tiene algún error tipográfico (como nombres de variables o funciones mal escritos o no definidos), ES mostrará un error. En nuestro siguiente ejemplo:

  • heightunit.shown es un nombre de variable no definido (en realidad es heightunits.shown) y
  • "rnd()" es una función no definida (el nombre de función correcto es "round()" ).

En ambos casos, los errores se ubican dentro de un cuadro rojo para que sea más fácil detectarlos y corregirlos.



También puede ver que puede crear rápidamente informes complejos, como una tabla de valores ingresados o consejos personalizados.

Recuerde que toda personalización debe rodear las expresiones con llaves para que LimeSurvey sepa qué partes de la pregunta son texto libre y cuáles deben ser analizadas por el motor ExpressionScript.


Validación

ES controla cómo funcionan la mayoría de las opciones de preguntas avanzadas. Estos controlan aspectos como el número mínimo/máximo de respuestas, los valores individuales mínimo/máximo, los valores de suma mínimo/máximo y la verificación de que los valores ingresados coincidan con los patrones de cadena especificados. Cualquier valor en uno de esos campos se considera una expresión, por lo que puede tener criterios mínimo/máximo con relaciones condicionales complejas con otras preguntas.

En todos estos casos, dado que el atributo de pregunta avanzada siempre se considera una expresión, no se utilizan llaves al especificarlo.

La página encuestas de muestra muestra muchos ejemplos de trabajo que contienen una variedad de expresiones de validación.

ExpresiónScript - presentación

Para obtener más información sobre ExpressionScript y cómo puede utilizar diferentes expresiones para mejorar su encuesta, haga clic en el siguiente link.