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
Anwendung | Nutzen |
---|---|
Automatisierte CRM-Zuordnung | Keine händische Suche mehr |
E-Mail-Vorverarbeitung | Bot-ready für weitere Abläufe |
Einfache Reports aus Outlook | Felder 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