Zuordnung Mehrfachauswahl zu Datensätzen anderer Tabelle
Hi,
ich habe leider keine Ahnung vom Programmieren und hatte gehofft, ChatGPT könnte mir helfen. Aber ich drehe mich im Kreis.
Ich habe eine Tabelle "Projekte". In dieser gibt es das Mehrfachauswahlfeld "Besitzer". Nun soll jeder Besitzer, der dort ausgewählt ist, eine Email bekommen. Die Emailadresse wird aus einer weiteren Tabelle Namens "Mitarbeiter:Innen" abgerufen, indem der Wert aus "Besitzer" mit dem Wert in "Vorname" verglichen wird.
Prinzipiell funktioniert das, wie ich mit diesem Skript erfolgreich geprüft habe:
let besitzerWerte := chosen(Besitzer);
if count(besitzerWerte) = 0 then
alert("Das Feld 'Besitzer' ist leer.")
else
let besitzerNamen := "";
for v in besitzerWerte do
let mitarbeiter := first(select 'Mitarbeiter:Innen' where Vorname = v);
if mitarbeiter then
besitzerNamen := besitzerNamen + v + " - Gefundener Mitarbeiter: " + mitarbeiter.Vorname + " " +
mitarbeiter.Nachname +
", E-Mail: " +
mitarbeiter.Email
else
besitzerNamen := besitzerNamen + v + " - wurde nicht gefunden."
end
end;
alert("Besitzer und deren Zuordnung:" + besitzerNamen)
end
Wenn ich allerdings versuche, das in den Emailversand zu integrieren, funktioniert das nicht. In diesem Skript gibt es auch diverse alerts, allerdings wird mir immer nur der letzte angezeigt, der da lautet:
"Es wurde keine gültige E-Mail-Adresse gefunden"
Ich vermute, dass da auch vorher schon alerts angezeigt werden, die dann aber vom jeweils nächsten abgelöst und somit nur sehr kurz angezeigt werden. Ich vermute, irgendwas haut mit der Zuordnung von Besitzer<-->Vorname nicht hin oder die Emailadresse wird nicht korrekt extrahiert (es handelt sich um ein emailfeld namens "Email").
Hier der Code (aktuell zu Testzwecken als Button, soll später ein trigger werden):
let empfaenger := [];
let besitzerWerte := chosen(Besitzer);
if count(besitzerWerte) = 0 then
alert("Das Feld 'Besitzer' ist leer.")
else
alert("Besitzer Werte: " + concat(besitzerWerte, ", "));
for v in besitzerWerte do
let mitarbeiter := first(select 'Mitarbeiter:Innen' where Vorname = v);
if mitarbeiter then
alert("Mitarbeiter gefunden: " + mitarbeiter.Vorname + " " + mitarbeiter.Nachname);
let email := mitarbeiter.Email;
if email then
empfaenger := empfaenger + email;
alert("E-Mail-Adresse gefunden: " + email)
else
alert("Gesuchter Vorname: " + v + " hat keine E-Mail.")
end
else
alert("Gesuchter Vorname: " + v + " wurde nicht gefunden.")
end
end;
let empfaengerList := concat(empfaenger, ",");
alert("Empfänger Liste: " + empfaengerList);
let betreff := "Neues Projekt: " + Projektname;
let text := "Hallo, Ein neues Projekt wurde erstellt. Projektname: " + Projektname +
" Beschreibung: " +
Projektbeschreibung +
" Viele Grüße";
if length(empfaengerList) > 0 then
sendEmail({
from: "event@fotoautomaten.berlin",
to: empfaengerList,
subject: betreff,
text: text,
html: ""
})
else
alert("Es wurde keine gültige E-Mail-Adresse gefunden.")
end
end
Über Unterstützung wäre ich sehr dankbar!
11 Antworten
-
Hi, Sebastian. Wie sieht denn ein einzelner Wert im Mehrfachauswahlfeld aus? Vorname-Leerzeichen-Nachname?
Ist es ein einfaches multi oder ein dmulti?
-
Es ist ein normales Mehrfachauswahlfeld. Versuche mal diese Codeversion. Ich habe alle alerts bis auf die Erfolgskontrolle herausgenommen, um das Script übersichtlicher zu gestalten. Du kannst diese ja selbst noch nachtragen. Mirko
let betreff := "Neues Projekt: " + Projektname; let text := "Hallo, Ein neues Projekt wurde erstellt. Projektname: " + Projektname + " Beschreibung: " + Projektbeschreibung + " Viele Grüße"; let allNames := chosen(Besitzer); let empfaengerList := (select 'Mitarbeiter:Innen' where contains(allNames, Vorname)).text(Email); if cnt(empfaengerList) > 0 then sendEmail({ from: "event@fotoautomaten.berlin", to: empfaengerList, subject: betreff, text: text, html: "" }); alert("an diese Mitarbeiter:Innen wurde eine email verschickt: " + " " + join(empfaengerList, " ")) end
Content aside
- vor 1 MonatZuletzt aktiv
- 11Antworten
- 84Ansichten
-
3
Folge bereits