Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

ExpressionScript / Platzhalter in Fragetext werden nicht ausgewertet

More
4 hours 37 minutes ago #274101 by nkuecuek
LimeSurvey version: Version 6.16.14+260323 
Own server or LimeSurvey Cloud: 
Code:
Own server (hochschulinternes LimeSurvey-System)
Survey theme/template: 
Code:
Standard-Theme 
==================
(Write here your question/remark)Hallo zusammen,ich arbeite aktuell an meiner Masterarbeit und setze dafür eine Online-Studie im hochschulinternen LimeSurvey-System um (LimeSurvey-Version: 6.16.14+260323  Umfrage-ID: 791927). Dabei stoße ich auf ein Problem bei der Verwendung von ExpressionScript bzw. von Platzhaltern im Fragetext und hoffe auf Unterstützung aus der Community.In meiner Umfrage habe ich mehrere Gleichungsfragen (Equation Questions) angelegt, u. a.:
  • Code:
    COND
    Code:
    if(rand(0,1) < 0.5, 1, 2)
  • Code:
    STUDIENID
    Code:
    concat('S', round(rand(100000,999999)))
  • Code:
    CHATURL
    Code:
    concat('http://localhost:8501/?pid=', STUDIENID, '&amp;cond=', COND)
  • Code:
    CHATLINK
    Code:
    concat('Chat starten')
     (nur Platzhalter für einen späteren Hyperlink)
Diese Variablen möchte ich anschließend in einer Textanzeige-Frage im Fragetext ausgeben, z. B.:
  • Code:
    {CHATLINK}
  • Code:
    COND = {COND}
  • Code:
    STUDIENID = {STUDIENID}
  • Code:
    CHATURL = {CHATURL}
Problem:
In der Umfragenvorschau werden diese Ausdrücke nicht ausgewertet, sondern als Rohtext angezeigt, z. B.:
  • Code:
    COND = if(rand(0,1) < 0.5, 1, 2)
  • Code:
    STUDIENID = concat('S', round(rand(100000,999999)))
  • Code:
    CHATURL = concat(...)
Statt der berechneten Werte sehe ich also die Formel selbst.Meine Fragen:
  1. Ist ExpressionScript / der Expression Manager in dieser LimeSurvey-Installation grundsätzlich aktiv, oder kann er serverseitig deaktiviert sein?
  2. Muss ich auf Umfrage-, Gruppen- oder Frageebene bestimmte Einstellungen vornehmen, damit Platzhalter wie 
    Code:
    {COND}
     im Fragetext korrekt ausgewertet werden?
  3. Gibt es bekannte Einschränkungen bei der Verwendung von 
    Code:
    rand()
     oder 
    Code:
    concat()
     in Gleichungsfragen, insbesondere wenn die Ergebnisse später im Fragetext bzw. in einem Link verwendet werden?
  4. Müssen Equation Questions an einer bestimmten Stelle stehen (z. B. in einer eigenen Gruppe vor der Anzeige-Frage), damit ihre Werte in nachfolgenden Fragen verfügbar sind?
Hintergrund:
Ich benötige eine zufällige Zuweisung zu zwei Bedingungen (COND = 1 vs. 2) sowie eine generierte Studien-ID, die anschließend dynamisch in einen Link zu einer externen Chat-Anwendung übergeben wird. Ein statischer Link funktioniert bereits – es geht ausschließlich um die dynamische Einbindung der berechneten Variablen.Vielen Dank im Voraus für Ihre Unterstützung!Viele Grüße
Nihal

Please Log in to join the conversation.

More
1 hour 51 minutes ago - 1 hour 45 minutes ago #274104 by holch
Um hier helfen zu können, bräuchten wir eine LSS Datei um zu sehen, was du wirklich gemacht hast. Wir wollen gar nicht deine ganze Umfrage, sondern nur hier den relevanten Teil. Also entweder ein kleines Beispiel basteln oder eine Kopie deiner Umfrage erstellen und alles rauslöschen was nicht notwendig ist.

Aber ich vermute mal, das Problem liegt hier:
Code:
COND = if(rand(0,1) < 0.5, 1, 2

Soweit ich weiss, kann man so in ExpressionScript keine Variablen definieren.

Du müsstest für jede Variable eine eigene Formel-Frage erstellen und dann darauf zugreifen.

Du erstellst also eine Formel-Frage mit dem Name/Code "COND" und drin steht dann sowas:
Code:
{if(rand(0,1) < 0.5, 1, 2)}

Allerdings ist das auch kein guter Code für Limesurvey, weil die Zufallszahl immer wieder neu gewürftelt wird. Daher mal im Forum suchen, wie man eine "fixe" Zufallszahl erstellt.

Dann würde ich die Zufallszahl in einer Formelfrage getrennt erzeugen und dann auf diese Frage zugreifen um zu schauen ob die Bedingung zutrifft.

Wie gesagt, mit einer LSS-Datei könnte man dir da besser weiterhelfen. So wie es aktuell dargestellt wird kann ich mir nicht wirklich genau vorstellen, was du da gemacht hast und warum es nicht funktioniert.

Help us to help you!
  • Provide your LS version and where it is installed (own server, uni/employer, SaaS hosting, etc.).
  • Always provide a LSS file (not LSQ or LSG).
Note: I answer at this forum in my spare time, I'm not a LimeSurvey GmbH employee.
Last edit: 1 hour 45 minutes ago by holch.

Please Log in to join the conversation.

More
45 minutes ago - 30 minutes ago #274105 by Joffm
Ach, Leute,
was ist denn los heute? Liegt das an Ostern? Oder an der Zeitumstellung?

Der eine schreibt ungeniert Französisch hier, und @nkuecuek Deutsch.

Also, holch, verschiebe es doch in den deutschen Teil..

Please, English in this part of the forum.

Joffm

There seems to be a big misunderstanding in the way ExpressionScript works.
1. Expressions are surrounded by curly brackets.
You seem to have created a question named "COND".
COND=if(rand(0,1)<0.5,1,2) 
2. The function "rand(0,1)" returns one of the two values: 0 or 1.
Now the IF-function returns in case of 0 1, in case of 1 2.
This is equivalent to simple "rand(1,2)"
3. To store this calculation in COND it is suficient to write the function into the question text, without assignment.
This is the main use case of a question of type equation.
So only {rand(1,2)}
4. "concat" is not an implemented function in LimeSurvey. Where did you find this? Did ChatGPT tell you?
Please read the manual

And - as holch - send a lss export of the relevant questions.
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
Last edit: 30 minutes ago by Joffm.

Please Log in to join the conversation.

Moderators: holchtpartner

Lime-years ahead

Online-surveys for every purse and purpose