0

Mail Versand

Hallo zusammen, 

ich versuche gerade einen automatischen Mailversand einzurichten. 

Folgendes Problem und Code: 

let pl := this;

sendEmail({
                from: userEmail(),
                to: "ag@keiltec.com",
                subject: "Zuteilung neues Projekt - keiltec",
                html: "<p>&nbsp;</p>
<p>Das Projekt <a href=" +
                url +
                ">" +
                Projektnummer +
                ", " +
                pl +
                "</a>&nbsp;wurde an einen Projektleiter vergeben.</p>
<p> Projektname: " +
                'Projektname (max. 2 Zeilen)' +
                "</p>
<p>&nbsp;</p>
<p>keiltec GmbH</p>"
            })

Für pl soll der Name aus dem Nutzerfeld ausgelesen werden. Das Problem an der ganzen Sache ist allerdings, dass der obige Code bei "Trigger nach Änderung" dieses Nutzerfeldes ausgelöst werden soll. Sprich Der Code und die Mail funktioniert aber "pl" wird nicht mit dem Name des Projektleiters gefüllt, weil die Mail versendet wird, wenn ich den Nutzer eintrage... 
Gibts eine Möglichkeit wie ich das hinkriege?

 

Danke und VG

Alex

9 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Mit "let pl = this" bekommt du die ID des Datensatzes. Wenn du ein Datenfeld daraus haben willst, musst du das zusätzlich angeben, z. B. mit

    ... + pl.Nutzerfeld + ...

    Oder, wenn sich das Nutzerfeld im aktuellen Datensatz befindet, kann man es auch direkt in die Variable einlesen (statt "this"):

    pl := Nutzerfeld;
      • AG_AGAG
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Hi, danke für die Antwort. Das hab ich schon probiert. Mein Problem ist, dass ich die Mail bei Änderung des Feldes erzeugen will, dass ich auch mit pl auslesen will.
      Dh. die Mail soll beim Auswählen eines Projektleiters (=Nutzerfeld) erzeugt werden. Der Name des Projektleiters soll dann in der Mail bei pl stehen. 

      Meinst Du, das kriegt man irgendwie hin?

      VG

      • Ninox-Professional
      • planoxpro
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Ist das "Nutzerfeld" tatsächlich ein Feld vom Tp 'Nutzer'? Dann bekäme man als Standard den userName() als String zurück. Will man den vollen Namen, so, wie er bei Ninox hinterlegt ist, kann man diesen mit

      let pl := userFullName(Nutzerfeld);

      abrufen. Wenn "Nutzerfeld" jedoch ein normales Auswahlfeld mit den Namen ist, dann würde ich es mit text() versuchen:

      let pl := text(Nutzerfeld);
      • Ninox-Professional
      • planoxpro
      • vor 5 Monaten
      • Gemeldet - anzeigen

      Grundsätzlich: Der Änderungstrigger wird ausgelöst, wenn die Änderung vollzogen wurde. ImTrigger selbst wird dann auf den aktuellen Wert des Feldes Bezug genommen, also den geänderten. Das ist ja gerade der Zweck eines Änderungs-Triggers, dass man den neu eingegebenen Wert überprüfen bzw. auswerten kann.

      Ich würde das Script testweise mal auf einen Button legen und damit ausprobieren. M. W. müsste sendEmail() zwar auch in Triggern funktionieren (zumindest in der Cloud), aber probiert habe ich es selber noch nicht.

      • AG_AGAG
      • vor 5 Monaten
      • Gemeldet - anzeigen

       
      Die Mail wird bei Änderung von Projektleiter versendet, aber der Wert Projektleiter (=pl) bleibt leer in der Mail. 

      Ich probiere mal mit allen Variante durch und berichte hier. 

      Danke und VG

    • Ninox-Professional
    • planoxpro
    • vor 5 Monaten
    • Gemeldet - anzeigen
     said:
    aber der Wert Projektleiter (=pl) bleibt leer in der Mail. 

    Das kann eigentlich nur daran liegen, dass der Wert nicht auf die richtige Weise ausgelesen wird und pl deshalb leer bleibt. Die richtige Abfrage hängt aber wie gesagt vom Datentyp des Feldes ab (siehe oben).

      • AG_AGAG
      • vor 5 Monaten
      • Gemeldet - anzeigen

       Ich hab jetzt mal mit anderen Feldern vom Typ "Nutzer" getestet. Die werden problemlos mitversandt. Ich kann mir eigentlich nur noch vorstellen, dass das Feld Projektleiter sozusagen "noch nicht als gefüllt" gilt bevor die Mail durch Änderungen von Projektleiter versandt wird.

      Ich teste mal weiter. Es gab doch mal eine Timeout-Funktion bei der erst nach einer gewissen ms-Angabe weitergerechnet wird? 

      VG

    • Ninox-Professional
    • planoxpro
    • vor 5 Monaten
    • Gemeldet - anzeigen
     said:
    Ich kann mir eigentlich nur noch vorstellen, dass das Feld Projektleiter sozusagen "noch nicht als gefüllt" gilt bevor die Mail durch Änderungen von Projektleiter versandt wird.

    Das würde sehr wundern, weil der Trigger wie gesagt ja erst NACH der Änderung aktiviert wird. Ich würde testweise mal versuchen, den Projektleiter in ein Textfeld zu schreiben und das Trigger-Script in diesem Feld ausführen zu lassen.

    Ansonsten könnte man natürlich auch einen Button nehmen. Das ist dann ein Klick mehr, hätte aber den Vorteil, dass bei versehentlich falscher Auswahl nicht gleich eine Mail mit falscher Information versendet wird.

    • AG_AGAG
    • vor 5 Monaten
    • Gemeldet - anzeigen

    Update zum Thema

    folgender Code funktioniert:

    let my := Projektleitung;
    if my != null then
        do as server
            sendEmail({
                from: userEmail(),
                to: userEmail(Projektleitung),
                subject: "Zuteilung neues Projekt - keiltec",
                text: "Zuteilung Projekt",
                html: "<p>Dir wurde das Projekt " + Projektnummer + " (" + 'Projektname (max. 2 Zeilen)' +
                ") " +
                " zugeordnet.&nbsp;</p>
    <p>Zuständiger Vertrieb: " +
                'Zuständiger Vertrieb' +
                "&nbsp;</p>
    <p>Zuständiger Kalkulation: " +
                'Zuständiger Kalkulation' +
                "&nbsp;</p>
    <p><br></p>
    <p>keiltec GmbH</p>"
            });
            sendEmail({
                from: userEmail(),
                to: "...@keiltec.com",
                subject: "Zuteilung neues Projekt - keiltec",
                text: Projektleitung,
                html: "<p>Das Projekt " + Projektnummer + " wurde dem Projektleiter " +
                text(Projektleitung) +
                " zugeordnet.</p>
    <p>keiltec GmbH</p>"
            })
        end
    else
        void
    end

    Ich bin mir allerdings nicht ganz sicher, was plötzlich zur Funktion beigetragen hat. 

     

    VG

Content aside

  • vor 5 MonatenZuletzt aktiv
  • 9Antworten
  • 78Ansichten
  • 2 Folge bereits