0 votes
in SoSci Survey (dt.) by s068541 (120 points)

Gibt es die Möglichkeit den Zugang zu einem Fragebogenlink der per Serienmail geschickt wurde, auf eine Woche zu beschränken? Das würde heißen, dass das Datum bis wann der Fragebogen zugänglich für einen Probanden ist, kein Standardwert, der für alle Probanden gleich ist, sein sollte, sondern sich daraus berechnet wann der Fragebogen an die Person geschickt wurde. Sprich wenn Proband A den Fragebogen heute (Montag) verschickt bekommt, kann er nur bis nächsten Montag darauf zugreifen, Proband B jedoch der den Fragebogen erst morgen (Dienstag) zugeschickt bekommt kann ihn bis nächsten Dienstag öffnen. Gibt es da eine Option?
Danke schon mal im Voraus.

1 Answer

0 votes
by SoSci Survey (302k points)
edited by SoSci Survey

Wenn Sie die E-Mail-Adressen als "nicht-anonym" importiert haben, können Sie mit der Variable MAILSENT arbeiten und diese in einem Filter auf der ersten Seite verwenden. Falls diese Option für Sie in Frage kommt, müssen wir nur noch prüfen, ob value('MAILSENT') schon funktioniert oder von uns erst noch eingerichtet werden muss.

Ansonsten müssten Sie bitte kurz beschreiben, wie es zu den unterschiedlichen Versand-Zeitpunkten kommt. Auch daraus lässt sich u.U. eine Lösung entwickeln.

Ich sollte allerdings ergänzen, dass die praktische Relevanz dieser Frage vermutlich eher gering ist. Denn traditionell werden Einladungsmails entweder binnen 72 Stunden beantwortet oder gar nicht. Es ist nur ein sehr kleiner Teil an Teilnehmern, die eine Einladungsmail später noch einmal "hervorkramen" und teilnehmen.

Ergänzung

Seit 02/2018 liefert die Funktion panelData() den Versand-Zeitpunkt auch für anonyme Adresseinträge.

Beispiel-Code

Um den Teilnehmer nach 7 Tagen (nach dem Versand der E-Mail) abzuweisen, würden Sie auf Seite 1 des Fragebogens z.B. folgenden PHP-Code platzieren:

$info = panelData();
if ($info) {
  $sent = $info['mailsent'];
  if ($sent < strtotime('-7 days')) {
    text('AB01');  // Info-Text, wo das Problem ist
    buttonHide();
    pageStop();
  }
}
by s090561 (110 points)
Eine kleine Frage zu dieser Lösung:

Mit mailsent wird - so vermute ich - der Zeitpunkt abgerufen, an dem die letzte Mail gesendet wurde, in der man den Link dann aufruft.

Wenn wir uns folgende Konstellation vorstellen:

- 1. Mail wird verschickt - Tag 1
- Erinnerungsmail 1 wird verschickt - Tag 3
- Erinnerungsmail 2 wird verschickt - Tag 6

Der Link soll nicht mehr gültig sein, wenn Tag 7 verstrichen ist.
Wenn man "strtotime('-7 days')" nähme, würde sich das doch - falls meine Annahme stimmt - bis zu 13 Tagen aufblähen lassen, wenn man quasi knapp 7 Tage nach der 2. Erinnerungsmail den Link aufruft.

Kann man dieses Problem in den Griff bekommen?
by SoSci Survey (302k points)
Jetzt wird es aber anspruchsvoll :) Wie wird denn die erste Mail verschickt?
by s090561 (110 points)
:)

Also, es sind mehrere Fragebögen (Mehrfachbefragung). Am Ende eines Fragebogens kommt bspw.:

mailSchedule(false, 2, 60);
mailSchedule(false, 3, 180);
mailSchedule(false, 4, 360);

Die Zeiten sind jetzt nur zum Testen so kurz, sonst eben 1, 3, 6 Tage z.B.

Am Anfang des nächsten Bogens werden zum einen mit mailRevoke() evtl. Mail-Schedules entfernt... und dann eben die obige Abfrage mit mailsent gemacht.

Um in diesem Beispiel zu bleiben, würde ich z.B. die Grenze gerne auf 360 Sekunden nach Mail-ID 2 setzen. Also in dem Fall auf insgesamt 420 Sekunden.

Ich habe mir überlegt, ob es vielleicht möglich wäre "Pseudo-Mails" zu erstellen, die nicht an die Teilnehmer verschickt werden, aber dennoch quasi den mailsent-Zähler zurücksetzen... Um den Abstand zwischen allen Mails immer auf 60 Sekunden halten und dann in der panelData()-Abfrage 60 Sekunden als Grenze zu nehmen.
Aber da habe ich so meine Zweifel...
by SoSci Survey (302k points)
Ich kann nochmal prüfen, ob man panelData() vielleicht so mofizieren kann, dass es auch das Datum der ersten Einladung angibt. Allerdings wäre das frühestens Mitte März machbar. Vermutlich passt das nicht ganz in Ihren Zeitplan.

Als Workaround können Sie einfach den Zeitstempel in der "Datenbank für Inhalte" ablegen. Etwa unter der Personen-ID.

$id = caseSerial();
dbSet($id, strtotime('+1 day'));

Im zweiten Fragebogen rufen Sie diesen Wert dann statt MAILSENT ab:

$id = caseSerial();
$data = dbGet($id);
if ($data) {
  $sent = (int)$data[0];
  if ($sent < strtotime('-7 days')) {
    ....
  }
}
by s090561 (110 points)
Oh, der Workaround klingt sehr gut! Werde ich gleich ausprobieren.
by s068944 (400 points)
Hallo, ich habe eine ähnliche Problematik und frage mich, worauf sich "+1day" im oberen Absatz bezieht. Deute ich es richtig, dass in diesem Fall die zweite Befragung einen Tag nach Zeitstempel (aus der ersten Befragung) verschickt wird und dass die zweite Befragungswelle in einem Zeitraum von 7 Tagen nach Zeitstempel (aus der ersten Befragung) gültig ist? Für Hilfe wäre ich sehr dankbar!
by SoSci Survey (302k points)
Der Funktionsaufruf strtotime('+1 day') liefert den Zeitstempel "jetzt in einem Tag". Also unabhängig von der ersten Einladung, sondern bezogen auf den Zeitpunkt, wann der Teilnehmer den Fragebogen (und spezifisch diese Seite) bearbeitet.
asked Mar 2, 2020 in SoSci Survey (dt.) by s106113 (205 points) Bezug der Variable Mailsent

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

...