0 votes
in SoSci Survey (dt.) by s210540 (210 points)
edited by SoSci Survey

Hallo,

Probanden erhalten mittels Serienmails während 21 Tagen Einladungen für den täglichen Fragebogen (sowie Erinnerungsmails), wenn sie sich für die Studie eignen.

Im Falle eines Screenouts möchte ich, dass die Einladungen & Erinnerungen für die Fragebögen nicht mehr gesendet werden (was im Moment leider noch der Fall ist - ein Proband hatte mich darauf hingewiesen).

Ich habe es mit folgendem Code als Beispiel für die Einladung & die Erinnerung für den 1. Fragebogen gemacht:

if (value ('IC02') == 1) {
   mailRevoke(false, 2); //Keine Einladung TF NR. 1;
} else {
   mailRevoke(false, 3); // Keine Erinnerung TF NR. 1;
}

Heute ist dann eine Einladung für den 1. Fragebogen gekommen, jedoch keine Erinnerung. Es scheint also nur für die Erinnerung funktioniert zu haben.

Können Sie mir sagen, was ich hier falsch gemacht habe?

Besten Dank.

by SoSci Survey (327k points)
> Im Falle eines Screenouts möchte ich ...

Wie und wo haben Sie den Screenout denn definiert? Dieser ist ja üblicherweise mit einem text() und buttonHide() o.ä. verknüpft, wenn er nicht direkt als Filter in einer Frage definiert wurde.

Einen Screenout-Filter, wie Sie ihn direkt in einer Frage definieren können, können Sie für Ihren Anwendungsfall nicht verwenden. Denn sonst erfolgt der Screenout bevor irgend ein anderer PHP-Code ausgeführt wird. Sie müssen den Screenout also mittels PHP-Code programmieren: https://www.soscisurvey.de/help/doku.php/de:create:functions:pagestop#beispielscreenout
by s210540 (210 points)
Vielen Dank für die Antwort.

Ich habe den Code angepasst:

if (value('IC02') == 1) {
  text('SS08');
  buttonHide();
  pageStop();
} else {
  mailRevoke();
}

So sollten dann keine Serienmails mehr (für Einladungen und Erinnerungen) verschickt werden?

1 Answer

0 votes
by SoSci Survey (327k points)

So sollten dann keine Serienmails mehr (für Einladungen und Erinnerungen) verschickt werden?

Fast richtig - das mailRevoke() muss ja dann aufgerufen werden, wenn der Screenout erfolgt, also:

if (value('IC02') == 1) {
  mailRevoke();
  text('SS08');
  buttonHide();
  pageStop();
}

Stellen Sie bitte sicher, dass der Screenout nur über diesen Code erfolgt und in IC02 nicht noch zusätzlich ein Filter definiert ist.

by s210540 (210 points)
Ich habe nun folgenden Code nach der Seite 'IC02' im Fragebogen (auf Extraseite) platziert:

// Bei Sceen-out keine Einladungen & keine Erinnerungen schicken

if (value('IC02') == 1) {
  mailRevoke();
  text('SS08');
  buttonHide();
  pageStop();
}

// Screen-in - Auf Fragebogenseite "I" springen
if (value('IC02') == 2) {
goToPage('I');
}

Zudem habe ich auf der Seite IC02 alle Filter entfernt.

Leider kommen trotzdem am nächsten Tag im Falle eines Scrrenouts die Einladungen und Erinnerungen (Serienmails).

Können sie mir weiterhelfen? Warum funktioniert es nicht?
by SoSci Survey (327k points)
Den zweiten Teil des Filters (==2) können Sie m.E. weglassen. Wenn auf der Seite nichts angezeigt wird, springt SoSci Survey ohnehin zur nächsten Seite (wenn Sie nichts anderes eingestellt haben).

> Leider kommen trotzdem am nächsten Tag im Falle eines Scrrenouts die Einladungen und Erinnerungen (Serienmails).

Sie haben den Fragebogen mit dem mailSchedule() ausgeführt, nachdem Sie die Änderung eingepflegt hatten, korrekt? Was zeigt denn die Debug-Information auf der Seite mit dem Screenout an?
by s210540 (210 points)
Zum einen kommt die Warnung "Die Variable IC02 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt. Daher kann die Funktion value() keinen Antwort-Wert ermitteln." obwohl ich den Code eine Seite nach der Frage mit IC02 aufgeführt habe.

Wenn ich debug() eingebe, kommt der Hinweis:

Debug-Information für 'IC02':
'IC02' = IC02 (string)
value('IC02') =

Sie haben den Fragebogen mit dem mailSchedule() ausgeführt, nachdem Sie die Änderung eingepflegt hatten, korrekt?

Ich arbeite mit mailSchedule() auf der ersten Seite des Screening-Fragebogens um nach dem Fragebogen Serienmails zu verschicken.
by SoSci Survey (327k points)
> Zum einen kommt die Warnung "Die Variable IC02 wurde im Laufe dieses Interviews auf keiner vorhergehenden Seite abgefragt.

Dann wird der Filter auch nicht aktiv - die Frage ist, weshalb dann Ihr Screenout funktioniert? Haben Sie vielleicht doch noch einen Screenout in der Frage definiert?

Bitte stellen Sie bei der Verwendung von PHP-Filtern sicher, dass diese nicht auf derselben Seite stehen wie die Filtefrage (IC02, s. auch Anleitung zu PHP-Filtern) und dass Sie den Test auf der Seite mit der Filterfrage (oder weiter vorne) starten.
by s210540 (210 points)
> Dann wird der Filter auch nicht aktiv - die Frage ist, weshalb dann Ihr Screenout funktioniert? Haben Sie vielleicht doch noch einen Screenout in der Frage definiert?

Der Screen-out hat bisher nicht funktioniert, die Serienmails sind dennoch gekommen.
by SoSci Survey (327k points)
> Der Screen-out hat bisher nicht funktioniert, die Serienmails sind dennoch gekommen.

Die Frage ist, ob dieser Filter überhaupt aktiv wird. Bitte starten Sie den Fragebogen im Debug-Modus (spätestens ab der Seite mit der Screenout-Frage) und berichten Sie die vollständige Debug-Information von der auf der Seite, wo der Screenout dann kommt.

Willkommen im Online-Support von SoSci Survey.

Hier bekommen Sie schnelle und fundierte Antworten von anderen Projektleitern und direkt von SoSci Survey.

→ Eine Frage stellen


Welcome to the SoSci Survey online support.

Simply ask a question to quickly get answers from other professionals, and directly from SoSci Survey.

→ Ask a Question

...