ExpressionScript-Anleitungen
From LimeSurvey Manual
Überblick über das bisher Erklärte
Wenn Sie bisher der Struktur des LimeSurvey-Handbuchs gefolgt sind, bedeutet das, dass Sie bereits die LimeSurvey-Terminologie kennen. Als Nächstes haben wir uns mit Ausdrücken und Variablen befasst, um zu erfahren, wie wir unsere Umfragen verbessern können. Im nächsten Teil sind wir zu den Typen und Bedeutungen von Syntax-Highlighting übergegangen, um zu erfahren, wie man Syntaxfehler korrigiert.
Nachdem diese Grundbegriffe abgedeckt sind, können wir uns Beispielen zuwenden und erklären, wie Ausdrücke in LimeSurvey funktionieren.
Syntaxhervorhebung
Die folgenden Screenshots geben Beispiele, zeigen jedoch nicht die Werte der Tooltips. Ein Tooltip ist ein informatives Feld, das immer dann angezeigt wird, wenn Sie mit der Maus über fett gefärbte Wörter fahren.
Aufgrund dieser Syntaxhervorhebung ist es sehr einfach, korrekte Ausdrücke zu verfassen, selbst wenn diese kompliziert sind. Obwohl das LimeSurvey-Team den Versuch plant, eine Expression Builder-GUI zu erstellen, können Sie die vorhandene Syntaxhervorhebung verwenden, um Tippfehler schnell zu erkennen und zu beheben. Sie können die Tooltips auch verwenden, um die Genauigkeit Ihrer Ausdrücke zu überprüfen (z. B. um zu bestätigen, dass Sie die gewünschte(n) Variable(n) ausgewählt haben).
In jedem der Beispiele gibt es drei Spalten:
- Quelle – das ist der Rohtext, den Sie in das Fragefeld von LimeSurvey eingeben würden
- Pretty Print – das ist das syntaxhervorgehobene Äquivalent dessen, was Sie eingegeben haben
- Beachten Sie, dass Ausdrücke in dieser Hervorhebung mit einem braunen Hintergrund, aber nicht von geschweiften Klammern umgeben angezeigt werden.
- Da EM rekursive Substitution unterstützt, würde die Anzeige von geschweiften Klammern in der Hervorhebung zu Syntaxfehlern führen.
- Ergebnis – Dies ist die Ausgabe, die generiert wird, wenn EM die Quelle verarbeitet
- Alles, was ordnungsgemäß ersetzt werden kann, ist
- Fehlerhafte Ausdrücke werden inline mit Syntaxhervorhebung angezeigt. Fehler werden von einem rot umrandeten Kästchen umgeben.
Richtige Syntax
Nachfolgend finden Sie Beispiele für die richtige Syntax:
- Values: zeigt an, dass bekannte Variablen farblich gekennzeichnet sind, je nachdem, ob sie auf der aktuellen Seite festgelegt sind. INSERTANS im alten Stil:xxxx erhält seinen eigenen Farbcodierungsstil
- Question Attributes: zeigt, dass die Punktnotation auf einige Eigenschaften von Fragen zugreifen kann
- Math: zeigt, dass grundlegende und komplexe Berechnungen unterstützt werden
- TextProcessing: zeigt einige der verfügbaren Textverarbeitungsfunktionen
- Dates: zeigt zwei der verfügbaren datumsbezogenen Funktionen
- Conditional: zeigt die Verwendung der if()-Funktion. Die Auswahlmöglichkeiten können verschachtelt werden
- Maßgeschneiderter Absatz: Sie können einen Bericht basierend auf vorherigen Werten vollständig anpassen
- EM verarbeitet innerhalb von Zeichenfolgen: Zeigt, dass es Ersetzungen innerhalb von Zeichenfolgen durchführen kann. Dieses Beispiel generiert einen maßgeschneiderten Bildnamen
- EM verarbeitet keine geschweiften Klammern wie diese: Zeigt, dass ES den Ausdruck ignoriert, wenn die geschweiften Klammern maskiert sind oder ein Leerzeichen zwischen dem Ausdruck und den geschweiften Klammern steht
EM-Syntax mit Fehlern
Hier finden Sie Beispiele für häufige Fehler beim Eingeben von ES-Ausdrücken. Beachten Sie, dass die Tooltips zusätzliche Informationen liefern.
- Inline-Javascript, das vergessen hat, nach der geschweiften Klammer Leerzeichen einzufügen
- Da „document.write“ direkt nach einer geschweiften Klammer erscheint, geht EM davon aus, dass es sich um einen Ausdruck handelt, und rot- Felder „Dokument“ und „Schreiben“, da es sich um undefinierte Variablen bzw. Funktionen handelt.
- Unbekannte/falsch geschriebene Variablen, Funktionen und Operatoren
- Hier haben wir vergessen, dass wir den Variablennamen „Geschlecht“ anstelle von „“ verwenden. Sex“, aber EM fängt diesen Fehler ab. Außerdem wird „++“ rot markiert, da dies kein unterstützter Operator ist.
- Warnt, wenn = anstelle von eq verwendet oder Wertzuweisungen durchgeführt werden
- Beachten Sie, dass „=“ und „+=“ sind in roter Schrift statt in schwarzer Schrift. Wenn Sie mit der Maus darüber fahren, werden Warnungen angezeigt, die darauf hinweisen, dass Sie einen Wert zuweisen.
- Falsche Anzahl von Argumenten für Funktionen
- if() benötigt 3 Argumente, aber es wurden 4 angegeben, also bewegen Sie den Mauszeiger über dem rot umrahmten „if“ wird der Fehler erklärt und die unterstützte Syntax angezeigt.
- sum() akzeptiert eine unbegrenzte Anzahl von Argumenten, aber wir hatten ein abschließendes Komma vor den schließenden Klammern, also ist das rot umrahmt.
- Nicht übereinstimmende Klammern
- Dies ist einer der häufigsten Fehler beim Schreiben von Ausdrücken.
- Dies zeigt zwei Beispiele für fehlende schließende Klammern und ein Beispiel für eine zu viele schließende Klammern.
- Nicht unterstützte Syntax
- Wenn Sie einen Operator oder ein Satzzeichen verwenden, das ES nicht unterstützt, wird es mit einem roten Rahmen versehen.
- Ungültige Zuweisungen
- Einige Variablen sind schreib- und lesbar und ihre Werte können geändert werden. Andere sind schreibgeschützt.
- Wenn Sie versuchen, den Wert einer schreibgeschützten Variablen zu ändern, ist dies nicht möglich. EM markiert den Versuch mit einem roten Kästchen.
- Wenn Sie versuchen, einer Gleichung oder einer Zeichenfolge einen Wert zuzuweisen, erhalten Sie ebenfalls eine Fehlermeldung.
"Live"-Beispiele für Syntaxhervorhebung mit aktiven Tooltips
Quelle | Hübscher Druck | Ergebnis |
---|---|---|
Hier ist ein Beispiel für die OK-Syntax mit Tooltips Hallo {if(gender=='M','Mr.','Mrs.')} {surname}, es ist jetzt {date('g:i a',time())}. Wissen Sie, wo Ihre {sum(numPets,numKids)} Kinder und Haustiere sind? | Hier ist ein Beispiel für die OK-Syntax mit Tooltips Hallo , wenn ( Geschlecht == 'M' , 'Herr' , 'Frau' ) Nachname , ist es jetzt Datum ( 'g:i a' , Zeit ()) . Wissen Sie, wo sich Ihre sum ( numPets , numKids ) Kinder und Haustiere befinden? | Hier ist ein Beispiel für die OK-Syntax mit Tooltips Hallo Herr Smith , es ist jetzt 6:07 Uhr. Wissen Sie, wo Ihre 3 Kinder und Haustiere sind? |
Hier sind häufige Fehler aufgeführt, damit Sie die Tooltips sehen können Variablen, die vor ihrer Deklaration verwendet werden: {notSetYet} Unbekannte Funktion: {iff(numPets>numKids,1,2)} Unbekannte Variable: {sum(age,num_pets,numKids)} Falsche # Parameter: {sprintf()},{if(1,2)},{date()} Weisen Sie schreibgeschützte Variablen zu:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'} Unsymmetrische Klammern: {pow(3,4},{(pow(3,4)},{pow(3,4))} | Hier sind häufige Fehler aufgeführt, damit Sie die Tooltips sehen können Variablen, die vor ihrer Deklaration verwendet werden: notSetYet Unbekannte Funktion: iff ( numPets > numKids ,1,2) Unbekannte Variable: sum ( age , num_pets , numKids ) Falsche # Parameter: sprintf () , if (1,2) , date () Weisen Sie schreibgeschützte Variablen zu: TOKEN:ATTRIBUTE_1 += 10 , name = 'Sally' Unsymmetrische Klammern: pow (3,4 , ( pow (3,4) , pow (3,4) ) | Hier sind häufige Fehler aufgeführt, damit Sie die Tooltips sehen können Variablen, die vor ihrer Deklaration verwendet werden: notSetYet Unbekannte Funktion: iff ( numPets > numKids ,1,2) Unbekannte Variable: sum ( age , num_pets , numKids ) Falsche # Parameter: sprintf () , if (1,2) , date () Weisen Sie schreibgeschützte Variablen zu: TOKEN:ATTRIBUTE_1 += 10 , name = 'Sally' Unsymmetrische Klammern: pow (3,4 , ( pow (3,4) , pow (3,4) ) |
Hier sind einige der nicht unterstützten Syntax Keine Unterstützung für '++', '--', '%',';': {min(++age, --age,age % 2);} Noch '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}} Noch Arrays: {name[2], name['mine']} | Hier sind einige der nicht unterstützten Syntax Keine Unterstützung für '++', '--', '%',';': min ( ++ age , -- age , age % 2) ; Noch '|', '&', '^': ( Summe (2 | 3,3 & 4,5 ^ 6) } Noch Arrays: name [ 2 ] , name [ 'mine' ] | Hier sind einige der nicht unterstützten Syntax Keine Unterstützung für '++', '--', '%',';': min ( ++ age , -- age , age % 2) ; Noch '|', '&', '^': ( Summe (2 | 3,3 & 4,5 ^ 6) } Noch Arrays: name [ 2 ] , name [ 'mine' ] |
Anpassungsbeispiele (z. B. Erweitern von {INSERTANS:xxx})
"Sehr geehrter {Herr}/{Frau} Smith..."
Verwenden Sie die Funktion if(), um zu entscheiden, ob 'Herr' oder 'Frau' angezeigt werden soll.
Die Syntax lautet if(test,do_if_true,do_if_false).
# | Code | Frage | Typ |
1 | Geschlecht | Was ist Ihr Geschlecht? | Geschlecht |
2 | Beispiel1 | Lieber {if(gender=='Herr','Frau')} Smith, ... | Langer Freitext |
Wie weiter unten zu sehen ist, sind „Herr“ und „Frau“ auf das zugeschnitten, was der Befragte als Antwort auf die Frage „Geschlecht“ auswählt.
"Sehr geehrter {Herr}/{Frau} Smith..." in der Einladungs-E-Mail
Sie können das obige Beispiel in der Einladungs-E-Mail mit Attributen aus der Token-Tabelle verwenden. Verwenden Sie die if()-Funktion, um auszuwählen, ob "Herr" oder "Frau" in der E-Mail verwendet werden soll.
Die Syntax lautet „if(test,do_if_true,do_if_false)“.
# | Attribut | Wert |
1 | Nachname | Smith |
2 | E-Mail-Adresse | test@test. com |
3 | ATTRIBUTE_2 | M |
Text in der Einladungs-E-Mail:
Lieber {if(ATTRIBUTE_2=='Herr','Frau')} {NACHNAME},
Sie wurden zur Teilnahme an einer Umfrage eingeladen:
https:/...
E-Mail anzeigen:
Berechnungs-/Bewertungsbeispiele
Bewertungswerte zur Laufzeit berechnen und die Ergebnisse in den Umfragedaten speichern
In diesem Beispiel werden alle Funktionen von EM verwendet, einschließlich Relevanz, Tailoring und dem Fragetyp „Gleichung“.
Es zeigt auch, dass sie alle JavaScript-fähig sind. Wenn Sie also diese Funktionen auf einer Seite haben, ändert sich diese dynamisch, wenn die Leute ihre Antworten festlegen und ändern.
# | Code | Frage | Typ | Relevanz |
1 | numKids | Wie viele Kinder haben Sie? | Numerische Eingabe | 1 |
2 | kid1 | Wie alt ist Ihr erstes Kind? | Numerische Eingabe | numKids >= 1 |
3 | kid2 | Wie alt ist Ihr zweites Kind? | Numerische Eingabe | numKids >= 2 |
4 | kid3 | Wie alt ist Ihr drittes Kind? | Numerische Eingabe | numKids >= 3 |
5 | kid4 | Wie alt ist Ihr viertes Kind? | Numerische Eingabe | numKids >= 4 |
6 | sumKidAges | {sum(kid1.NAOK,kid2. NAOK,kid3.NAOK,kid4.NAOK)} | Gleichung | 1 |
7 | kidSummary | Sie sagten, dass Sie {numKids} haben. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','Die Summe des Alters Ihrer ersten ',min(numKids,4),' Kinder ist ',sumKidAges,'.'),' ')} | |1 |
Um dieses Beispiel herunterzuladen, klicken Sie bitte auf den folgenden Link: Assessments_survey_example.
Nachfolgend finden Sie Screenshots repräsentativer Fragen. Wie Sie sehen, hebt die EM-Syntax alle Felder hervor, die möglicherweise Tailoring enthalten. Hier sehen Sie Beispiele für die Syntaxhervorhebung der Relevanz, den Fragetyp „Gleichung“ und Ersetzungen innerhalb einer Frage. Sie können Ersetzungen auch in der Hilfe, in der Gruppenkopfanzeige, in der Willkommensnachricht und in der Endnachricht verwenden.
Im nächsten Beispiel ist die Frage nur dann sichtbar, wenn die Relevanz {numKids >= 2) ist, wenn die Befragte angibt, dass sie mindestens zwei Kinder hat.
Unten sehen Sie möglicherweise, dass an jede Variable das Suffix .NAOK angehängt ist. Dies liegt daran, wie EM kaskadierende Relevanz unterstützt. Wenn Sie nicht über .NAOK verfügen, wird die Summe nur berechnet, wenn die Person angibt, dass sie 4 Kinder hat (z. B. wenn alle Variablen relevant sind). Die Verwendung von .NAOK bedeutet, dass wir die Summe auch dann berechnen möchten, wenn alle oder einige der Variablen irrelevant sind (z. B. „Nicht anwendbar“ (NA) ist in Ordnung (OK)).
Das Attribut .NAOK wirkt sich jedoch nur darauf aus, ob Variablen an EM übergeben werden. Wenn die befragte Person zunächst sagt, dass sie drei Kinder hat, und für jedes Kind das Alter eingibt, dann aber ihre Meinung ändert und sagt, dass sie zwei Kinder hat, wollen wir die Summe der drei eingegebenen Werte nicht sehen - da das dritte Kind in unserem Fall "nicht mehr zutreffend" ist:
Jeder einzelne Ausdruck ist farblich gekennzeichnet und hat einen braunen Hintergrund. Wie Sie sehen, gibt es hier drei separate Ausdrücke. Die letzte enthält eine Nachricht, die nur bedingt angezeigt wird, wenn die Person mehr als ein Kind hat.
Hier sind Screenshots der Umfrage in Aktion.
Wenn Sie die Seite zum ersten Mal besuchen, sehen Sie dies. Beachten Sie, dass es heißt "Sie haben 0 Kinder" statt "Sie haben 0 Kind".
Wenn ich den Wert für die Anzahl der Kinder auf 1 ändere, ändert sich die Anzeige sofort wie folgt, obwohl sie sich auf derselben Seite befindet:
Beachten Sie nun, dass die Grammatik korrekt ist: „Sie haben 1 Kind.
Jetzt ändere ich den Wert für die Anzahl der Kinder auf 3 und die Anzeige wechselt sofort zu diesem Wert.
Beachten Sie, dass unten nun die bedingte Meldung angezeigt wird: „Das Gesamtalter Ihrer ersten drei Kinder beträgt 0.“
Jetzt gebe ich das Alter meiner imaginären Kinder ein und erhalte folgende Anzeige, in der ihr Alter zusammengefasst ist:
Auch hier werden die Punktzahl und die Anzeige sofort aktualisiert, wenn ich die Werte eingebe, sodass Sie damit eine laufende Summe einer Bewertungspunktzahl anzeigen können.
Jetzt ändere ich den Wert für die Anzahl der Kinder auf 2. Die Anzeige hat sich wie folgt geändert:
Beachten Sie, dass, obwohl ich für das dritte Kind einen Wert von 5,5 eingegeben hatte, der Bericht jetzt nur noch die Werte meiner ersten beiden Kinder summiert.
Der Grund dafür ist, dass der 3. Wert nun irrelevant ist und irrelevante Werte von EM aktiv ignoriert werden.
Wenn ich die Anzahl der Kinder wieder auf 3 ändern würde, würde ich den von mir eingegebenen Wert von 5,5 erneut sehen. So verliere ich keine Informationen, die ich auf der Seite eingebe.
Wenn ich jedoch zur nächsten oder vorherigen Seite navigiere, werden alle irrelevanten Werte in der Sitzung und in der Datenbank auf NULL gesetzt. Wenn ich also den Wert bei 2 belassen würde, auf die nächste Seite gehen und dann zurückkommen und angeben würde, dass ich tatsächlich 3 Kinder habe, würde ich das Alter von 5,5 nicht mehr sehen.
Geben Sie Daten ein und sehen Sie sich einen sich dynamisch ändernden Bericht darüber an, was auf derselben Seite eingegeben wurde
Dieses Beispiel stellt den Tailoring-Prozess innerhalb von LimeSurvey vor.
Um dieses Beispiel herunterzuladen, klicken Sie auf den folgenden Link: Beispiel für eine Umfrage zu dynamischen Änderungen.
So sieht die Seite zunächst aus. Sie sehen nur die Frage, in welcher Stadt Sie leben:
Sobald Sie mit der Eingabe einer Antwort beginnen, beginnt auch der Anpassungsprozess:
Wenn Sie Antworten eingeben, wird die Tabelle unten auf der Seite aktualisiert und zeigt die Antwortcodes und Werte Ihrer Antworten an.
Allgemeine Debugging-Beispiele
Verschachtelte if()-Anweisungen (bedingte Logik)
EM unterstützt die Funktion „if(test,do_if_true,do_if_false)“, sodass Sie bedingte Logik oder Anpassungen durchführen können. Diese Funktion kann verschachtelt werden, um das Äquivalent von „if { } else if { } else { }“ auszuführen. EM informiert Sie, wenn die Klammern nicht ausgeglichen sind (z. B. wenn Ihnen eine schließende rechte Klammer fehlt) oder wenn Sie zusätzliche rechte Klammern haben. Sie sollten versuchen, die Klammern zu zählen, während Sie lange verschachtelte if-Anweisungen verfassen, sie speichern, auf Syntaxfehler prüfen und diese gegebenenfalls beheben. Schauen wir uns gemeinsam das folgende Beispiel an.
Auf die unten verwendete Fragengruppe kann hier zugegriffen werden: Tailoring-Umfrage example.lsg
Wenn Sie nichts eingegeben haben, sehen Sie zunächst nur „Hallo“.
Wenn Sie einen Namen eingeben, heißt es: „Hallo {Name}.“
Wenn Sie ein Alter eingeben, erhalten Sie eine individuelle Nachricht, je nachdem, ob Sie ein Kind im Vorschulalter sind oder nicht:
Schulalter, Teenager oder Erwachsener. Hier ist ein Teenager, der anonym bleiben möchte:
Hier ist die Logikdatei der Gruppe. Wie Sie in der „Wenn-basierten“ Frage sehen können, gibt es verschachtelte Wenn-Anweisungen, die auf dem Alter der Person basieren.
Wenn Sie diese Frage ursprünglich bearbeiten, ist es wahrscheinlich, dass Sie irgendwann die falsche Anzahl an Klammern haben. Folgendes passiert, wenn Sie zu wenig davon haben:
Wenn Sie mit der Maus über das Wort „if“ fahren, das von einem roten Kästchen umgeben ist, heißt es „Klammern nicht ausgeglichen“. In diesem Fall sollten nach „schon ein Erwachsener!“ vier schließende Klammern stehen, es sind aber nur drei.
Wenn Sie hingegen eine zusätzliche rechte Klammer haben, wird diese von einem roten Kästchen umgeben, etwa so:
Wenn Sie die Frage tatsächlich bearbeiten, sieht die Frage folgendermaßen aus: