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

Ich habe eine eine Wöchentliche Studie aufgesetzt, die diese Woche los gehen sollen. Ich habe einen Presurvey gestartet, in dem die Serienmails aufgesetzt werden (siehe Code unten). Es wird immer eine Einladung zum Ende des Arbeitstages am Freitag verschickt (abgefragt in Item XX12_01). Zwei Stunden später wird eine Erinnerung verschickt, 6 Stunde später soll der Fragebogen deaktiviert werden.

Der Code scheint jedoch Probleme mit der dem Überschreiten von Tagesgrenzen zu haben. Dies ist mir dadurch aufgefallen, dass bei einer Eingabe von 23:00 Uhr, die erste Mail am 16.02 um 23 Uhr, die Erinnerungsmail allerdings für 16.02. um 1 Uhr geplant ist (also vor der eigentlichen ersten Mail).
Ich habe nun schon einige Probanden eingeladen und den Presurvey ausfüllen lassen. Bezüglich der Erinnerungsmail lässt sich das jedoch noch ganz gut händisch anpassen, wenn ich unter Einladungen verschicken > Serienmails den Zeitpunkt des Verschickens der Erinnerungen anpasse.
Mein Problem liegt eher bei den Deaktivierungen der Links, für die wahrscheinlich dasselbe Problem vorliegt und somit die Links deaktiviert werden, bevor die erste Mail versendet wird.

Daher meine Frage: Kann ich die Deaktivierungen der Links aus den Serienmails manuell im Nachhinein anpassen?

PhP-Code zum Aufsetzen der Serienmails:

$date= date("Y-m-d H:i:s");
$tz = "Europe/London";
$date = strtotime($date.$tz);

//Mails für die Messzeitpunkte
$MW1 = 2;
$MW2 = 3;
$MW3 = 4;

// Erinnerungen
$EW1 = 5;
$EW2 = 6;
$EW3 = 7;

//Zeiten
$zMZP1 =  date("2024-02-16 H:i", strtotime(value('XX12_01').$tz));
$zEW1 =  date("2024-02-16 H:i", strtotime(value('XX12_01').$tz)+2*60*60); //Erinnerung nach 2 Stunden
$zdW1 =  date("2024-02-16 H:i", strtotime(value('XX12_01').$tz)+6*60*60); //Deaktivierung nach 6 Stunden


$zMZP2 =  date("2024-02-23 H:i", strtotime(value('XX12_01').$tz));
$zEW2 =  date("2024-02-23 H:i", strtotime(value('XX12_01').$tz)+2*60*60);
$zdW2 =  date("2024-02-23 H:i", strtotime(value('XX12_01').$tz)+6*60*60);

$zMZP3 =  date("2024-03-01 H:i", strtotime(value('XX12_01').$tz));
$zEW3 =  date("2024-03-01 H:i", strtotime(value('XX12_01').$tz)+2*60*60);
$zdW3 =  date("2024-03-01 H:i", strtotime(value('XX12_01').$tz)+6*60*60);


mailSchedule(false, $MW1, strtotime($zMZP1),
    array('expire' => strtotime($zdW1)));
mailSchedule(false, $EW1, strtotime($zEW1),
    array('expire' => strtotime($zdW1)));

mailSchedule(false, $MW2, strtotime($zMZP2),
    array('expire' => strtotime($zdW2)));
mailSchedule(false, $EW2, strtotime($zEW2),
    array('expire' => strtotime($zdW2)));

mailSchedule(false, $MW3, strtotime($zMZP3),
    array('expire' => strtotime($zdW3)));
mailSchedule(false, $EW3, strtotime($zEW3),
    array('expire' => strtotime($zdW3)));

1 Answer

0 votes
by SoSci Survey (328k points)

Ein kleiner Fehler vorab:

$date= date("Y-m-d H:i:s");
$tz = "Europe/London";
$date = strtotime($date.$tz);

Da wird die Zeitzone direkt ans Datum geklebt - da fehlt ein Leerzeichen. Ich denke, das macht auch unten Ärger. Sie sollten die Zeitzone ohnehin besser in den Projekt-Einstellungen -> Spezielles einstellen. Dann brauchen Sie sich hier nicht damit herumschlagen.

die Erinnerungsmail allerdings für 16.02. um 1 Uhr geplant ist (also vor der eigentlichen ersten Mail).

Ich halte Ihren Code für falsch - das date() macht m.E. keinen Sinn.

$zdW1 =  date("2024-02-16 H:i", strtotime(value('XX12_01').$tz)+6*60*60);

Hier wird erst eine Zeit auf Basis von XX12_01 berechnet - soweit so gut - und dann packen Sie das in date(), was in Ihrem Fall alles außer Stunde und Minute überschreibt. Versuchen sie es mal einfacher:

$zdW1 =  strtotime(value('XX12_01').' '.$tz) + 6*60*60;

Oder (wie oben empfohlen) ohne Zeitzone bzw. nachdem Sie diese in den Projekt-Einstellungen festgelegt haben:

$zdW1 =  strtotime(value('XX12_01')) + 6*60*60;

Oder noch eleganter:

$zdW1 =  strtotime(value('XX12_01').' +6 hours');

Das funktioniert natürlich nur, wenn in "XX12_01" ein formal korrekter Zeitstempel steht.

by s254806 (120 points)
Hallo, danke für die Anmerkungen und Hilfe. Das wird sehr hilfreich sein, wenn ich es für den nächsten Durchlauf anpassen.

Mir ging es vor Allem darum, dass das "Kind jetzt quasi in den Brunnen gefallen ist." Also, dass ich jetzt im Nachhinein die Deaktivierung der Links anpassen möchte, da schon einige der Probanden teilgenommen haben und die Deaktivierung falsch eingestellt ist.
(den Code hatte ich eigentlich eher als Hintergrundinformation geschickt.)
Gibt es dafür eine Möglichkeit den Deaktivierungszeitpunkt zu überarbeiten/anzupassen?
by SoSci Survey (328k points)
Sind die Mails alle auf denselben Zeitpunkt eingestellt? Dann könnte ich das eventuell direkt in der Datenbank anpassen.
by s254806 (120 points)
Nein, die sind individuell auf die angegebene Uhrzeit eingestellt.
Wenn es aber möglich ist alle Deaktivierungen auf einen Zeitpunkt festzulegen wäre das ggf. auch in Ordnung.
Oder alle Deaktivierungen zu entfernen, wäre auch eine Alternative.
Die Hauptsache ist, dass die Deaktivierung nicht mehr vor dem Zeitpunkt des Versendens der eigentlichen Einladungsemail liegt.
by SoSci Survey (328k points)
Wie lautet denn die URL des Befragungsprojekts?
by s254806 (120 points)
edited by s254806
Ich hoffe es ist nicht problematisch, diese hier öffentlich zu posten
Die URL ist:
by s254806 (120 points)
Liebes Sosci Survey Team,
danke für Ihre Hilfe dabei und das Angebot, dies in der Datenbank anzupassen. Tatsächlich haben mein Team und ich uns dafür entschieden, die Studie neu zu starten. Daher ist ein weiteres Umstellung der Deaktivierungszeiten nicht mehr nötig.
Danke für Ihre Hilfe und schnellen Support, das ist wirklich immer sehr hilfreich und wird sehr an Ihrer Plattform wertgeschätzt.

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

...