Actions

ExpressionScript Engine - Kurzanleitung

From LimeSurvey Manual

Revision as of 06:46, 26 July 2023 by Maren.fritz (talk | contribs) (Created page with "Hier ist der Screenshot zum Bearbeiten der Gruppenebenenrelevanz von „Cohabitant 2“:")


Kurzanleitung

In LimeSurvey können Sie Ihre Umfragen über die Verwendung von ExpressionScript (kurz: ES) weiter anpassen. Sidenote: „ExpressionScript wurde in früheren Versionen Expression Manager (EM) genannt. Wenn Sie Expression Manager irgendwo lesen, ist es nur der alte Name von ES.

Mit ES kann Folgendes angegeben werden:

  1. 'Navigation/Verzweigung - ermöglicht es den Antworten eines Befragten, die Reihenfolge zu ändern, in der die Fragen angezeigt werden;
  2. Anpassung/Verzweigung - hilft Ihnen bei der Formulierung der Frage (z frühere Antworten oder das Konjugieren von Sätzen basierend auf dem Alter oder Geschlecht Ihrer Probanden) oder wie Sie benutzerdefinierte Berichte erstellen (z. B. Bewertungsergebnisse oder maßgeschneiderte Ratschläge);
  3. Validierung - stellt sicher, dass die Antworten bestimmte Kriterien erfüllen, wie Min- und Max-Werte oder ein bestimmtes Eingabemuster.

ES bietet eine intuitive Möglichkeit, die Logik für jede dieser Funktionen anzugeben. Fast alles, was Sie als mathematische Standardgleichung schreiben können, ist ein gültiger Ausdruck.

ES bietet derzeit Zugriff auf 70 Funktionen und kann problemlos erweitert werden, um weitere zu unterstützen. Außerdem können Sie damit auf Ihre Variablen zugreifen, indem Sie für Menschen lesbare Variablennamen verwenden (anstelle von SGQA-Namen).

Die nächsten Abschnitte zeigen die wichtigsten Einsatzorte des ES.


Relevanz (Steuerung der Navigation/Verzweigung)

Einige Umfragen verwenden die „Gehe zu-Logik“, sodass Sie zu Frage 5 weitergeleitet werden, wenn Sie Frage 1 mit Option C beantworten. Dieser Ansatz ist sehr begrenzt, da er schwer zu validieren ist. Außerdem geht es leicht kaputt, wenn Sie Fragen neu anordnen müssen. Andererseits verwendet ES Boolesche Relevanzgleichungen, um alle Bedingungen anzugeben, unter denen eine Frage gültig sein könnte. Wenn die Frage relevant ist, wird die Frage angezeigt, andernfalls ist sie nicht anwendbar und der Wert „NULL“ wird in der Datenbank gespeichert.

'Hinweis: Dies ähnelt dem, was über den Bedingungseditor erfolgen kann, mit ES können Sie jedoch ganz einfach viel komplexere und leistungsfähigere Kriterien angeben (und den Variablennamen anstelle von verwenden). SGQA-Kennungen).




Um das Relevanzkonzept besser zu verstehen, konzentrieren wir uns auf die folgende Umfrage, die den Body-Mass-Index (BMI) der Umfrageteilnehmer berechnet. Um es herunterzuladen, klicken Sie auf den folgenden Link: Beispiel für eine Body-Mass-Index-Umfrage.

Die Relevanzgleichung wird unten in der Spalte „Relevanz“ nach dem Variablennamen angezeigt. Die Relevanzwerte von „weight“, „weight_units“, „height“ und „height_units“ sind alle 1 (Standardwert), was bedeutet, dass diese Fragen immer angezeigt werden. Die Relevanz für den BMI beträgt jedoch {!is_empty(height) und !is_empty(weight)}, was bedeutet, dass der BMI nur berechnet wird, wenn der Proband einen Wert sowohl für Größe als auch für Gewicht eingibt (wodurch das Risiko eines Nullfehlers vermieden wird). ). Außerdem wird die Frage „Bericht“ nur angezeigt, wenn der Befragte alle vier Hauptfragen (Größe, Höheneinheiten, Gewicht, Gewichtseinheiten) beantwortet.


Datei:tutorial1.jpg


Datei:help.png Hinweis: Das obige Bild stammt aus der Umfragelogikdatei, mit der Sie vor der Aktivierung der Umfrage nach Syntaxfehlern suchen können.


Die Relevanz wird angezeigt und kann bearbeitet werden, wenn:

  • Sie die Relevanz auf Fragenebene anzeigen/bearbeiten möchten
  • Sie die Relevanz auf Gruppenebene anzeigen/bearbeiten möchten


Anzeigen/Bearbeiten der Relevanz auf Fragenebene

Diese Gleichung berechnet den Body-Mass-Index (BMI). Es wird nur abgefragt, ob die Person ihre Größe und ihr Gewicht eingibt.


Datei:tutorial2.jpg


Dies ist der Bearbeitungsbildschirm für die Frage „BMI“.


Datei:tutorial3.jpg


Beachten Sie, dass Sie bei der Eingabe einer Relevanzgleichung keine geschweiften Klammern verwenden.


Anzeigen/Bearbeiten der Gruppenebenenrelevanz

Konzentrieren wir uns nun auf ein anderes Beispiel – eine einfache Volkszählungsumfrage. Um es herunterzuladen, klicken Sie auf den folgenden Link: Beispiel für eine Volkszählungsumfrage.

Auf der ersten Seite wird abgefragt, wie viele Personen bei Ihnen wohnen, und dies wird in der Variable „cohabs“ gespeichert. Diese Seite wird nur angezeigt, wenn Sie mehr als einen Mitbewohner haben (sie wird für die zweite Person angezeigt, die mit Ihnen zusammenlebt). Außerdem p2name, p2age. p2sum werden nur angezeigt, wenn die Frage vor jeder von ihnen eine Antwort enthält.


Datei:tutorial4.jpg


Daher verfügt die Gruppe auch über Relevanzkriterien auf Fragenebene, sodass einige Fragen nur angezeigt werden, wenn Sie zuvor bestimmte Fragen beantwortet haben (z. B. wird p2age angezeigt, wenn p2name beantwortet wurde). ES vereint für Sie die Relevanz auf Gruppen- und Frageebene. „Fragen in einer Gruppe werden nur gestellt, wenn die Gruppe als Ganzes relevant ist.“ Dann wird nur die Teilmenge der Fragen innerhalb der Gruppe gestellt, die relevant sind.“

Hier ist der Screenshot zum Bearbeiten der Gruppenebenenrelevanz von „Cohabitant 2“:



Note that you do not use the curly braces when you enter a relevance equation.

Tailoring/Piping

ES lets you easily do simple and complex conditional tailoring. Sometimes you just need a simple substitution, like saying, "You said you purchased [Product]. What did you like best about it?". Sometimes you need conditional substitution like "[Mr./Mrs.] [LastName], would you be willing to complete our survey?". In this case, you want to use "Mr. or Mrs." based on the person's gender. Other times you need even more complex substitution (such as based upon a mathematical computation). ES supports each of these types of tailoring/piping.


Conditional Equations

The Body Mass Index example shows the ability to compute a person's BMI, even while letting them enter their height and weight in two different units (cms vs inches and kgs vs lbs):



In this case, weightkg is {if(weightunits == "kg", weight, weight * 0.453592)}. This "if()" function means that if the subject enters the weight using kilograms, use that value, otherwise multiply the entered value (pounds is the alternative) by 0.453592 to convert it to kilograms. The heightm variable uses a similar approach to compute the person's height in meters (height in cms/100), even if he has entered his height in inches (1 meter=3.28084 inches).

BMI is computed as: {weightkg / (heightm * heightm)}.

Lastly, the report conditionally tailors the message for the subject, telling her what he entered. (e.g., "You said you are 2 meters tall and weight 70 kg.")

In the below image, weightstatus uses nested "if()" statements to categorize the person as underweight to severely obese. You can see its equation by checking its logic:



From the edit window for this question, you can see two things:

  1. Tailoring must surround expressions with curly braces
  2. Expressions can span multiple lines if, as in this case, you want to make it easier to read the nested conditional logic.



Tailored Questions, Answers, and Reports

Note: Dynamic tailoring may not work if answer options are made available in select boxes on the same question page. This results from the fact that tailoring inserts a <span> tag which is not valid inside select options.

The BMI report looks like this:



Here is the edit window for the same question.



Anything within curly braces is treated as an expression, being syntax-highlighted (color coded) in the prior image. If you have any typos (such as misspelled or undefined variable names or functions), ES would show an error. In our below example:

  • heightunit.shown is an undefined variable name (it is actually heightunits.shown) and
  • "rnd()" is an undefined function (the proper function name is "round()").

In both cases, the errors are located within a red box to make it easier to spot and fix them.



You can also see that you can quickly create complex reports, such as a table of entered values or tailored advice.

Please remember that all tailoring must surround expressions with curly braces so that LimeSurvey knows which parts of the question are free text and which should be parsed by the ExpressionScript engine.


Validation

ES controls how most of the advanced question options work. These control aspects like min/max numbers of answers, min/max individual values, min/max sum values, and checking that entered values match specified string patterns. Any value in one of those fields is considered an expression, so you can have min/max criteria with complex conditional relationships to other questions.

In all of these cases, since the advanced question attribute is always considered an expression, you do not use curly braces when specifying it.

The sample surveys page shows many working examples containing a variety of validation expressions.

ExpressionScript - presentation

To find out more about ExpressionScript and how you can use different expressions to enhance your survey, please click on the following link.