Extraktion von relevanten Daten (z. B. Bestellnummer, Telefonnummer, Kundennummer) aus dem Mailtext per GPT (zu Outlook classic)

Warum das nützlich ist

Weil Du in vielen E-Mails nicht suchst, sondern findest.
Oder finden lassen solltest.
Bestellnummer, Telefonnummer, Kundennummer – irgendwo mittendrin.

Mit GPT kannst Du die Mail scannen lassen.
Und Dir gezielt die Werte rausziehen.
Automatisch. Strukturiert. Lesbar.

Was Du brauchst

  • Outlook Classic (mit VBA)
  • OpenAI API-Key
  • Zugriff auf den Body der Mail
  • Eine klar definierte Extraktionsanweisung (Prompt)

Ziel

GPT soll z. B. das hier finden:

Kundennummer: 4711
Bestellnummer: A-45823-X
Telefonnummer: +49 176 12345678

Schritt 1: Mailtext holen

Function HoleMailtext() As String
    Dim mail As Outlook.MailItem
    Set mail = Application.ActiveInspector.CurrentItem
    HoleMailtext = mail.Body
End Function

Schritt 2: GPT-Aufruf mit Extraktionsprompt

Function GPT_ExtrahiereDaten(mailText As String) As String
    Dim http As Object
    Dim json As String
    Dim apiKey As String
    Dim prompt As String

    apiKey = "DEIN_API_KEY"

    prompt = "Bitte extrahiere aus folgendem Mailtext die folgenden Werte, wenn vorhanden: " & _
             "Bestellnummer, Kundennummer, Telefonnummer. Gib das Ergebnis als JSON mit diesen drei Feldern zurück." & vbCrLf & mailText

    json = "{" & _
        """model"": ""gpt-4""," & _
        """messages"":[{""role"":""user"",""content"":""" & Replace(prompt, """", "\""") & """}]" & _
    "}"

    Set http = CreateObject("MSXML2.ServerXMLHTTP")
    http.Open "POST", "https://api.openai.com/v1/chat/completions", False
    http.setRequestHeader "Content-Type", "application/json"
    http.setRequestHeader "Authorization", "Bearer " & apiKey
    http.Send json

    GPT_ExtrahiereDaten = http.responseText
End Function

Schritt 3: Felder aus JSON extrahieren

Function GPT_Feld(json As String, feld As String) As String
    Dim sc As Object
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
    sc.AddCode "function val(j,f){return JSON.parse(JSON.parse(j).choices[0].message.content)[f] || '';}"
    GPT_Feld = sc.Run("val", json, feld)
End Function

Schritt 4: Ergebnisse in Benutzerfelder schreiben

Sub ExtrahiereUndSchreibeFelder()
    Dim mail As Outlook.MailItem
    Set mail = Application.ActiveInspector.CurrentItem

    Dim body As String
    Dim json As String

    body = HoleMailtext()
    json = GPT_ExtrahiereDaten(body)

    Dim bestellnr As String
    Dim kundennr As String
    Dim telefon As String

    bestellnr = GPT_Feld(json, "Bestellnummer")
    kundennr = GPT_Feld(json, "Kundennummer")
    telefon = GPT_Feld(json, "Telefonnummer")

    mail.UserProperties.Add "Bestellnummer", olText
    mail.UserProperties("Bestellnummer").Value = bestellnr

    mail.UserProperties.Add "Kundennummer", olText
    mail.UserProperties("Kundennummer").Value = kundennr

    mail.UserProperties.Add "Telefonnummer", olText
    mail.UserProperties("Telefonnummer").Value = telefon

    mail.Save
    MsgBox "Werte extrahiert und gespeichert." & vbCrLf & _
           "Bestellnr: " & bestellnr & vbCrLf & _
           "Kundennr: " & kundennr & vbCrLf & _
           "Telefon: " & telefon
End Sub

Optional: Als Kategorie oder Betreff-Ergänzung

Wenn Du’s im Betreff sichtbar brauchst:

mail.Subject = mail.Subject & " [" & bestellnr & "]"

Oder: Kategorisieren nach Kundennummern-Range (z. B. intern vs. extern).

Was das bringt

AnwendungNutzen
Automatisierte CRM-ZuordnungKeine händische Suche mehr
E-Mail-VorverarbeitungBot-ready für weitere Abläufe
Einfache Reports aus OutlookFelder durchsuchen, exportieren

Was Du beachten musst

  • GPT kann nur das extrahieren, was es semantisch erkennt
  • Wenn der Text zu kryptisch ist, helfen keine Prompts
  • Nummernformate ggf. lokal prüfen (z. B. mit Regex als Backup)
  • GPT-Antworten können leicht variieren → robust parsen

„Du liest noch? GPT hats längst gefunden.“

Wenn Du Mails nicht mehr durchforsten willst – ich bau Dir die Extraktion direkt in Outlook.
Knopfdruck. Fertig. Weiterverarbeiten.

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert