Warum das hilfreich ist
Weil Du in Mails oft Arbeitsaufträge oder Termine hast – aber keiner klickt auf „In Aufgabe umwandeln“.
„Bitte senden Sie uns das Angebot bis Freitag“
→ Wird vergessen.
„Der Termin ist am 15. Juni um 10 Uhr in Hamburg“
→ Steht in der Mail, aber nicht im Kalender.
Mit GPT kannst Du genau solche Infos aus dem Mailtext extrahieren.
Und dann per VBA automatisch Aufgaben oder Termine anlegen.
Was GPT leisten soll
- Aufgabe oder Termin erkennen
- Betreff formulieren
- Datum und Uhrzeit extrahieren
- ggf. Ort und Fälligkeitsdatum setzen
Was Du brauchst
- Outlook Classic
- OpenAI API-Key
- Zugriff auf den Body der Mail
- GPT-Prompt zur strukturierten Extraktion
- VBA zur Anlage des Items
Ziel-Format: JSON
{
"typ": "Aufgabe",
"betreff": "Angebot senden",
"faelligkeit": "2025-06-07",
"beschreibung": "Bitte Angebot für Projekt Müller bis Freitag senden"
}
oder
{
"typ": "Termin",
"betreff": "Kundentermin Müller",
"datum": "2025-06-15",
"uhrzeit": "10:00",
"ort": "Hamburg",
"beschreibung": "Vorstellung der neuen Planung"
}
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-Prompt & API-Aufruf
Function GPT_ErkenneAufgabeOderTermin(mailText As String) As String
Dim http As Object
Dim apiKey As String
Dim json As String
Dim prompt As String
apiKey = "DEIN_API_KEY"
prompt = "Lies folgenden E-Mail-Text und extrahiere eine Aufgabe oder einen Termin daraus. " & _
"Antworte als JSON. Felder: typ (Aufgabe oder Termin), betreff, beschreibung, datum (YYYY-MM-DD), " & _
"uhrzeit (HH:MM) bei Terminen, faelligkeit (YYYY-MM-DD) bei Aufgaben, ort falls bekannt." & 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_ErkenneAufgabeOderTermin = http.responseText
End Function
Schritt 3: JSON-Felder auslesen
Function GPT_JSONFeld(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_JSONFeld = sc.Run("val", json, feld)
End Function
Schritt 4: Item anlegen
Sub GPT_AufgabeOderTerminAnlegen()
Dim mailtext As String
Dim json As String
mailtext = HoleMailText()
json = GPT_ErkenneAufgabeOderTermin(mailtext)
Dim typ As String
typ = GPT_JSONFeld(json, "typ")
If typ = "Aufgabe" Then
Call GPT_AufgabeAnlegen(json)
ElseIf typ = "Termin" Then
Call GPT_TerminAnlegen(json)
Else
MsgBox "Kein gültiger Typ erkannt: " & typ
End If
End Sub
Aufgaben-Anlage
Sub GPT_AufgabeAnlegen(json As String)
Dim task As Outlook.TaskItem
Set task = Application.CreateItem(olTaskItem)
task.Subject = GPT_JSONFeld(json, "betreff")
task.Body = GPT_JSONFeld(json, "beschreibung")
task.DueDate = GPT_JSONFeld(json, "faelligkeit")
task.ReminderSet = True
task.ReminderTime = task.DueDate & " 09:00"
task.Save
MsgBox "Aufgabe angelegt: " & task.Subject
End Sub
Termin-Anlage
Sub GPT_TerminAnlegen(json As String)
Dim appt As Outlook.AppointmentItem
Set appt = Application.CreateItem(olAppointmentItem)
appt.Subject = GPT_JSONFeld(json, "betreff")
appt.Body = GPT_JSONFeld(json, "beschreibung")
appt.Location = GPT_JSONFeld(json, "ort")
Dim datum As String
Dim zeit As String
datum = GPT_JSONFeld(json, "datum")
zeit = GPT_JSONFeld(json, "uhrzeit")
appt.Start = datum & " " & zeit
appt.Duration = 60
appt.ReminderSet = True
appt.ReminderMinutesBeforeStart = 15
appt.Save
MsgBox "Termin angelegt: " & appt.Subject
End Sub
Was Du damit automatisieren kannst
E-Mail-Satz | Automatisch erzeugt |
---|---|
„Bitte senden Sie das Angebot bis Freitag“ | Aufgabe mit Fälligkeit |
„Treffen am 12. Juni um 14 Uhr in Bremen“ | Kalendereintrag mit Ort & Zeit |
„Deadline für Rückmeldung: Montag“ | Erinnerung als Aufgabe |
Was Du beachten musst
- GPT erkennt nur, was klar formuliert ist – Konjunktive sind schwierig
- Zeitangaben wie „übermorgen“ musst Du selbst umrechnen, wenn nötig
- Du kannst mehrere Aufgaben/Mails im Batch verarbeiten
- Reminder-Zeit kannst Du individuell setzen
„Wenn GPT weiß, was Du tun sollst – soll Outlook es auch wissen.“
Wenn Du daraus einen produktiven Workflow machen willst: Ich bau Dir das so, dass nichts mehr durchrutscht.
Keine Aufgabe vergessen. Kein Termin verpasst.
Keine Antworten