E-Mail an alle Teilnehmer in Apple Mail per Befehlsschaltfläche erzeugen
Hallo zusammen,
ich knabbere schon länger an einer kniffligen Sache herum, leider ohne funktionierendes Ergebnis... Vielleicht kann jemand den Knoten in meinem Kopf entwirren?
Folgende Konstellation: Da gibt es eine Tabelle "Seminare" mit Untertabelle "Teilnehmer" welche mit der Tabelle "Kontakte" verknüpft ist. Klare Sache, ich füge zu einem Seminar mehrere Teilnehmer hinzu. Bisher alles easy. Manche Kontakte haben schon an mehreren Seminaren teilgenommen, tauchen daher mehrfach in der Tabelle "Teilnehmer" auf.
Fragestellung: Ich möchte die E-Mail-Adressen ALLER Teilnehmer von Seminaren mit dem Seminartitel "Seminar 1" ermitteln und dann per Befehlsschaltfläche dieses Ergebnis im Blindkopie Feld an Apple Mail übergeben und eine neue E-Mail erzeugen. Ninox App ohne Abo kann nur diese Variante, funktioniert allerdings super in der Tabelle Seminare als Gruppen-E-Mail an alle Teilnehmer EINES Seminars.
Wenn ich mit select alle Teilnehmer ermittle, die jemals am Seminar 1 teilgenommen haben, dann erhalte ich viele Mehrfachnennungen. Klar, weil die öfters teilgenommen haben. Ich möchte aber wissen, welche Kontakte am Seminar 1 (das schon 12 mal stattgefunden hat...) teilgenommen haben und all denen eine E-Mail schicken.
Please help!!!
Vielen Dank schon mal im Voraus, Christian
12 Antworten
-
Hallo Christian, es gibt eine Funktion namens "unique()", mit der mehrfach vorkommende Einträge eines Arrays oder einer Tabelle nur ein Mal berücksichtigt werden. Das kann zum Beispiel(!) so aussehen:
unique((select Teilnehmer where Seminar = "Seminar 1").Kontakt)
-
WOW!! Das klappt! Tausend Dank!!
Ich musste die Funktion ein klein wenig anpassen. Sie sieht nun so aus:
unique((select Teilnehmer where Seminare.Titel = "Seminar 1").Kontakte.'E-Mail-Adresse')
und liefert mir alle E-Mail-Adressen von allen Teilnehmern ohne mehrfache Wiederholungen. Ich muss diese Formel jetzt nur noch in eine let := Variable einpacken, die dann in das BCC Feld der E-Mail übernommen wird.
Großartig, herzlichen Dank für die Hilfe, Christian
-
Zusatzfrage:
Könnte ich den Teil Seminare.Titel = "Seminar 1" ersetzen durch eine contains Variante?
Damit würde ein Wort aus dem Seminartitel ausreichen für die Suche.
-
sollte funktionieren
unique((select Teilnehmer where contains(Seminar.Titel, "Seminar 1")).Kontakt)
-
Nochmal WOW! Danke Torsten! funktioniert, und zwar so:
Es gibt jetzt ein Textfeld zur Eingabe des Suchbegriffs und ein Formularfeld:
let myS := 'Suchbegriff Seminartitel';
unique((select Teilnehmer where contains(Seminare.Titel, myS)).Kontakte.'E-Mail-Adresse')Damit kann ich jetzt megapraktisch Teilnehmergruppen auswählen und die passenden E-Mail-Adressen herausfinden.
Das erleichtert meinen Workflow sehr.
Danke Copytexter und Torsten für den tollen Support!
vg, Christian
-
Vorschlag zur weiteren Verfeinerung:
let myS := lower('Suchbegriff Seminartitel');
unique((select Teilnehmer where contains(lower(Seminare.Titel), myS)).Kontakte.'E-Mail-Adresse')
hat den Charme, dass sich der User über Groß-Klein-Schreibung des Suchbegriffs keinen Kopf machen muss...
lg, Torsten
-
Ich bin der einzige User und mache mir aber so was von einem Kopf über all die leckeren Funktionen in Ninox...
Das baue ich gleich noch mit ein - DANKE
Übrigens: Das Ergebnis dieser Berechnung oben kann ich so nicht direkt an Apple Mail übergeben. Dort landet es nämlich ohne , zwischen den Adressen und dadurch werden sie nicht erkannt.
Lasse mir jetzt lediglich die Namen der gefundenen Teilnehmer anzeigen, quasi als Kontrolle über das Ergebnis.
Die E-Mail-Adressen übergebe ich an Apple Mail durch folgende Befehlsschaltfläche:
let myS := 'Suchbegriff Seminartitel';
let myK := unique(select Teilnehmer where contains(Seminare.Titel, myS));
let adressString := "";
for p in myK do
adressString := adressString + ", " + p.Kontakte.'E-Mail-Adresse'
end;
openURL("mailto:" + "post@christianobermaier.de" + "?" + "cc=" + "" + "&" + "bcc=" + adressString + "&subject=" + "" + "&" + "body=" + "")Gibt es dazu eine Verfeinerung?? Die lower Ergänzung baue ich natürlich noch ein
-
es mangelt am Komma?
let myS := lower('Suchbegriff Seminartitel');
concat(unique((select Teilnehmer where contains(lower(Seminare.Titel), myS)).Kontakte.'E-Mail-Adresse'))
lg, Torsten
-
also zu deinem Code:
let myS := lower('Suchbegriff Seminartitel');
let adressString := concat(unique(select Teilnehmer where contains(lower(Seminare.Titel), myS));
openURL("mailto:" + "post@christianobermaier.de" + "?" + "cc=" + "" + "&" + "bcc=" + adressString + "&subject=" + "" + "&" + "body=" + "")
-
Örgs, natürlich so, sorry:
let myS := lower('Suchbegriff Seminartitel');
let adressString := concat(unique((select Teilnehmer where contains(lower(Seminare.Titel), myS)).Kontakte.'E-Mail-Adresse'));
openURL("mailto:" + "post@christianobermaier.de" + "?" + "cc=" + "" + "&" + "bcc=" + adressString + "&subject=" + "" + "&" + "body=" + "")
-
Torsten, my Hero, herzlichen Dank!! Funktioniert prächtig!
Ich lasse mir in einem Feld alle ermittelten Teilnehmernamen anzeigen. Nur so als Sichtkontrolle des Ergebnisses. Das sieht nun schöner aus, weil ein Leerzeichen Abstand dazugekommen ist.
Aber jetzt kommts...
Können die noch alphabetisch sortiert werden?? Du hast dafür sicherlich noch einen Zauberbegriff im Ärmel, oder??
-
Hab's Ein kleines sort an der richtigen Stelle macht's möglich!
Content aside
- vor 3 JahrenZuletzt aktiv
- 12Antworten
- 865Ansichten