Prozessautomatisierung mit Chatbots in Google Workspace

Unsere Motivation: Bye Bye, Zettelwirtschaft!
Wir suchten nach einer unkomplizierten Lösung, die es Mitarbeitern ermöglicht, Urlaubsanträge digital einzureichen – mit automatischer Genehmigung, Ablehnung und Kalenderverwaltung innerhalb unseres Google Workspace Intranets. Anstatt in teure Software zu investieren, entwickelten wir unseren eigenen Chatbot.
Der komplette Workflow sieht folgendermaßen aus:
- Mitarbeiter reicht Urlaubsantrag per Slash-Befehl im Chat ein
- Vorgesetzter erhält automatisch eine E-Mail mit Genehmigungs-Buttons
- Bei Klick auf "Genehmigen" wird der Urlaub im Teamkalender eingetragen
- Alle Anträge werden in einem Google Sheet dokumentiert
- Der Mitarbeiter erhält eine Bestätigung im Chat
Vorteile von Chat-Bots & Google Apps Script
Intelligente Interaktion: Mehr als nur Text
Nutzer können über einfache Slash-Befehle spezifische Aktionen auslösen. Interaktive Dialogfenster ersetzen E-Mail-Ketten, indem sie gezielt Informationen abfragen.
Nahtlose Integration – Dein Bot als Brücke zu Google Workspace
Unsere Mitarbeiter haben unseren Firmenchat (Google Chat) die meiste Zeit geöffnet. Sie müssen nicht zwischen Tools wechseln. Alle Benachrichtigungen, Auswertungen und Kalendereinträge bleiben in der vertrauten Umgebung.
Automatisierte Workflows – Der Bot als Prozess-Manager
Trigger und Aktionen lassen sich einfach verknüpfen. Der Urlaubsantrag startet eine Sequenz: Speicherung in Sheets, Manager-Benachrichtigung, Genehmigungslink, Statusupdates, Kalendereintrag und Mitarbeiter-Benachrichtigung – alles ohne manuelles Kopieren oder Nachfassen.
Technische Umsetzung
1. Projekt anlegen & Bot einrichten
Zunächst muss ein neues Projekt in der Google Cloud Console erstellt und die Google Chat API aktiviert werden. Der Bot benötigt folgende Konfiguration:
- Name und Profilbild für den Bot
- Beschreibung der Funktionalität
- Definition der Slash-Befehle
Wir haben drei Befehle definiert:
/help → Zeigt alle verfügbaren Befehle
/einreichen → Öffnet das Formular für einen neuen Urlaubsantrag
/uebersicht → Listet alle eigenen Anträge auf2. Bot-Logik mit Google Apps Script
Das Herzstück des Bots ist ein Google Apps Script. Die onMessage()-Funktion reagiert auf eingehende Befehle und gibt entsprechende Card-Widgets zurück:
function onMessage(event) {
const message = event.message.text;
if (message.includes('/help')) {
return createHelpCard();
}
if (message.includes('/einreichen')) {
return createVacationDialog();
}
if (message.includes('/uebersicht')) {
return getMyRequests(event.user.email);
}
return { text: 'Unbekannter Befehl. Nutze /help für eine Übersicht.' };
}3. Interaktive Dialoge erstellen
Der /einreichen-Befehl öffnet ein Dialogfenster mit Formularfeldern für Startdatum, Enddatum und optionalen Kommentar:
function createVacationDialog() {
return {
action_response: {
type: 'DIALOG',
dialog_action: {
dialog: {
body: {
sections: [{
widgets: [
{
dateTimePicker: {
name: 'startDate',
label: 'Startdatum',
type: 'DATE_ONLY'
}
},
{
dateTimePicker: {
name: 'endDate',
label: 'Enddatum',
type: 'DATE_ONLY'
}
},
{
textInput: {
name: 'comment',
label: 'Kommentar (optional)'
}
}
]
}]
}
}
}
}
};
}4. E-Mail-Benachrichtigung an Vorgesetzte
Nach Absenden des Formulars wird automatisch eine HTML-formatierte E-Mail an die Personalverantwortlichen gesendet:
function sendApprovalEmail(request) {
const approveUrl = getWebAppUrl() + '?action=approve&id=' + request.id;
const rejectUrl = getWebAppUrl() + '?action=reject&id=' + request.id;
const htmlBody = `
<h2>Neuer Urlaubsantrag</h2>
<p><strong>Mitarbeiter:</strong> ${request.employeeName}</p>
<p><strong>Zeitraum:</strong> ${request.startDate} bis ${request.endDate}</p>
<p><strong>Kommentar:</strong> ${request.comment || '-'}</p>
<br>
<a href="${approveUrl}" style="background: #22c55e; color: white;
padding: 12px 24px; text-decoration: none; border-radius: 6px;">
✓ Genehmigen
</a>
<a href="${rejectUrl}" style="background: #ef4444; color: white;
padding: 12px 24px; text-decoration: none; border-radius: 6px;">
✗ Ablehnen
</a>
`;
GmailApp.sendEmail(
MANAGER_EMAIL,
'Urlaubsantrag: ' + request.employeeName,
'',
{ htmlBody: htmlBody }
);
}Genehmigung per Klick
Wenn der Vorgesetzte auf einen Button in der E-Mail klickt, wird die doGet()-Funktion aufgerufen:
function doGet(e) {
const action = e.parameter.action;
const requestId = e.parameter.id;
if (action === 'approve') {
// Urlaubseintrag im Kalender erstellen
createCalendarEvent(requestId);
// Status in Google Sheet aktualisieren
updateRequestStatus(requestId, 'Genehmigt');
// Mitarbeiter benachrichtigen
notifyEmployee(requestId, true);
return HtmlService.createHtmlOutput(
'<h1 style="color: #22c55e;">✓ Urlaub genehmigt!</h1>'
);
}
if (action === 'reject') {
updateRequestStatus(requestId, 'Abgelehnt');
notifyEmployee(requestId, false);
return HtmlService.createHtmlOutput(
'<h1 style="color: #ef4444;">✗ Urlaub abgelehnt</h1>'
);
}
}Verwendete Google APIs
- Google Chat API – Für Bot-Interaktionen und Slash-Befehle
- Gmail API – Für HTML-formatierte Benachrichtigungs-E-Mails
- Calendar API – Für automatische Kalendereinträge
- Spreadsheet API – Für die Dokumentation aller Anträge
Fazit
Die Implementierung war mit Google Apps Script erstaunlich einfach. Nach dem Deployment als Web-App war der Bot sofort einsatzbereit. Unsere Mitarbeiter haben ihn begeistert angenommen – kein Papier mehr, keine E-Mail-Ketten, alles läuft automatisch.
Wir planen bereits weitere Chatbots für andere Prozesse: Krankmeldungen, Reisekostenabrechnungen und Meeting-Buchungen. Die Möglichkeiten mit Google Workspace sind nahezu unbegrenzt.