Actions

ExpressionScript Engine - Kurzanleitung

From LimeSurvey Manual

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


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. Tailoring/Piping - hilft Ihnen bei der Formulierung der Frage (z. B. Bezugnahme auf frühere Antworten oder Konjugation von Sätzen auf der Grundlage des Alters oder Geschlechts Ihrer Probanden) oder bei der Erstellung benutzerdefinierter Berichte (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 SGQA-Kennungen verwenden).




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.



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.



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



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 werden p2name, p2age und p2sum nur dann angezeigt, wenn die Frage vor jeder dieser Fragen eine Antwort enthält.



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“:



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

Tailoring/Piping

Mit EM können Sie einfach und komplex das bedingte Anpassen Ihrer Fragen durchführen. Manchmal brauchen Sie nur eine einfache Ersetzung, zum Beispiel: "Sie haben angegeben, dass Sie [Produkt] gekauft haben. Was hat Ihnen am besten gefallen?" Manchmal brauchen Sie eine bedingte Ersetzung wie "[Herr/Frau] [NachName], wären Sie bereit, unsere Umfrage auszufüllen? ". In diesem Fall möchten Sie Herrn oder Frau basierend auf dem Geschlecht der Person verwenden. In anderen Fällen benötigen Sie eine noch komplexere Substitution (zum Beispiel basierend auf einer mathematischen Berechnung). EM unterstützt jede dieser Arten von Anpassung/Ersetzung.


Bedingungsgleichungen

Das Beispiel des Body-Mass-Index zeigt die Möglichkeit, den BMI einer Person zu berechnen, auch wenn sie ihre Größe und ihr Gewicht in zwei verschiedenen Einheiten (cm vs. Inches und kg vs. lbs) eingeben kann:



In diesem Fall ist Gewicht kg {if(weightunits == "kg", Gewicht, Gewicht * 0,453592)}. Diese „if()“-Funktion bedeutet, dass, wenn der Proband das Gewicht in Kilogramm eingibt, dieser Wert verwendet wird, und andernfalls wird der eingegebene Wert (Pfund ist die Alternative) mit 0,453592 multipliziert, um ihn in Kilogramm umzurechnen. Die Variable heightm verwendet einen ähnlichen Ansatz, um die Größe der Person in Metern (Größe in cm/100) zu berechnen, auch wenn sie ihre Größe in Zoll (1 Meter = 3,28084 Zoll) eingegeben hat.

Der BMI wird wie folgt berechnet: {Gewichtkg / (Höhem * Körpergrößem)}.

Schließlich passt der Bericht die Nachricht bedingt an den Betreffenden an, indem er ihm mitteilt, was er eingegeben hat. (z. B. "Sie haben angegeben, dass Sie 2 m groß sind und 70 kg wiegen").

Im folgenden Bild verwendet Weightstatus verschachtelte „if()“-Anweisungen, um die Person als untergewichtig bis stark fettleibig zu kategorisieren. Sie können die Gleichung sehen, indem Sie ihre Logik überprüfen:



Im Bearbeitungsfenster für diese Frage können Sie zwei Dinge sehen:

  1. Tailoring muss Ausdrücke mit geschweiften Klammern umgeben
  2. Ausdrücke können sich über mehrere Zeilen erstrecken, wenn Sie, wie in diesem Fall, die verschachtelte bedingte Logik leichter lesbar machen wollen.



Maßgeschneiderte Fragen, Antworten und Berichte

Hinweis: Die dynamische Anpassung funktioniert möglicherweise nicht, wenn Antwortoptionen in Auswahlfeldern auf derselben Fragenseite verfügbar gemacht werden. Dies ist darauf zurückzuführen, dass das Tailoring einen <span>-Tag einfügt, der innerhalb von Auswahloptionen nicht zulässig ist.

Der BMI-Bericht sieht so aus:



Hier ist das Bearbeitungsfenster für dieselbe Frage.



Alles in geschweiften Klammern wird als Ausdruck behandelt und im vorherigen Bild syntaktisch hervorgehoben (farblich gekennzeichnet). Wenn Sie Tippfehler haben (z. B. falsch geschriebene oder undefinierte Variablennamen oder Funktionen), zeigt ES einen Fehler an. In unserem folgenden Beispiel:

  • heightunit.shown ist ein undefinierter Variablenname (eigentlich heißt heightunits.shown) und
  • „rnd()“ ist eine undefinierte Funktion (der richtige Funktionsname ist „round()“).

In beiden Fällen werden die Fehler in einem roten Kästchen angezeigt, um das Erkennen und Beheben zu erleichtern.



Sie sehen auch, dass Sie schnell komplexe Berichte erstellen können, beispielsweise eine Tabelle mit eingegebenen Werten oder maßgeschneiderte Ratschläge.

Bitte denken Sie daran, dass alle Anpassungen Ausdrücke mit geschweiften Klammern umgeben müssen, damit LimeSurvey weiß, welche Teile der Frage Freitext sind und welche von der ExpressionScript-Engine analysiert werden sollen.


Validierung

ES steuert, wie die meisten erweiterten Frageoptionen funktionieren. Diese steuern Aspekte wie die minimale/maximale Anzahl von Antworten, die minimalen/maximalen Einzelwerte, die minimalen/maximalen Summenwerte und die Überprüfung, ob eingegebene Werte mit bestimmten Zeichenfolgenmustern übereinstimmen. Jeder Wert in einem dieser Felder wird als Ausdruck betrachtet, sodass Sie Min/Max-Kriterien mit komplexen bedingten Beziehungen zu anderen Fragen haben können.

Da das erweiterte Frageattribut in all diesen Fällen immer als Ausdruck betrachtet wird, verwenden Sie bei der Angabe keine geschweiften Klammern.

Die Seite Beispielumfragen zeigt viele Arbeitsbeispiele mit verschiedenen Validierungsausdrücken.

ExpressionScript - Präsentation

Um mehr über ExpressionScript zu erfahren und wie Sie verschiedene Ausdrücke zur Verbesserung Ihrer Umfrage verwenden können, klicken Sie bitte auf den folgenden Link [1].