Der Import-Prozess: Vom Kalender zur Tabelle
Informationen zum Artikel

Autor: Dmitry Dugarev
Der Kern von DolmiDesk™ ist die Verwandlung Deines Google Kalenders in eine präzise Buchhaltungs-Tabelle.
Dieser Artikel erklärt den kompletten Fluss: Wie Du Termine eintragen musst, wie das System sie versteht (Logik) und wie sie im Tab Aufträge landen.
Bevor es losgeht
Damit ein Termin überhaupt vom System "gesehen" wird, gelten folgende Regeln:
- Der Kalender: Du musst in der Config definiert einen bestimmten Kalender auswählen (z.B. "DolmiDesk Aufträge"). Nur Termine aus diesem Kalender werden importiert.
- Die Farbe: Der Termin muss die Farbe haben, die in der Config definiert ist (Standard: MAUVE). Andere Farben (z.B. private Termine) werden ignoriert.
- Der Zeitraum: Das Skript schaut standardmäßig 7 Tage in die Vergangenheit (wird in der Config definiert). Alte Termine werden nicht erneut importiert, wenn sie schon in der Tabelle stehen oder 7 Tage überschritten sind.
Wie und wann wird importiert?
Der Import wird manuell angestoßen, indem Du in der Tabelle Aufträge auf die Schaltfläche 📅 Neue Aufträge importieren klickst.

Sobald Du mit dem System vertraut bist, kannst Du den Import auch automatisieren, indem Du einen zeitgesteuerten Trigger in Google Apps Script einrichtest (z.B. täglich um Mitternacht).
Der Kalender als Eingabemaske
Du nutzt den Google Kalender nicht nur für Zeitplanung, sondern um dem System Daten zu füttern. Das ist eine logische Stelle für Dich, weil Du dort sowieso Deine Termine verwaltest - Du hast schon alle Infos parat, wir brauchen sie nur noch in der Tabelle.
Das System liest diese Felder automatisch aus:

Hier die Übersicht:
| Kalender-Feld | Ziel in Tabelle Aufträge | Funktion |
|---|---|---|
| 1. Titel | Anlass | Beschreibt, was gemacht wurde. Präfixe (s.u.) werden entfernt. |
| 2. Ort | Einsatzadresse | Ziel für die Google Maps Berechnung. |
| 3. Datum/Zeit | Datum, Beginn, Ende | Basis für Honorar und Reiseketten. |
| 4. Notizen & Anhänge | (Export) | Anhänge später bei der Rechnungserstellung automatisch kopiert und in die E-Mail eingefügt und in Notizen können die zusätzlichen Felder definiert werden (siehe Die Beschreibung: Deine Kommandozentrale) |
Die Typ-Erkennung (Steuercodes)
Du kannst dem System über den Titel mitteilen, wie der Auftrag abgerechnet werden soll. Das Schlüsselwort muss ganz am Anfang stehen.
| Präfix im Titel | Typ | Auswirkung auf Abrechnung |
|---|---|---|
Online ... | Online | • Keine Fahrtkosten. • Adressen werden geleert. • Ggf. Online-Pauschale. |
[Ausfall] ... | Ausfall | • Volle Fahrtkosten (Du warst vor Ort). • Honorar nach "Ausfallpauschalen" (Zeit). |
[Absage] ... | Absage | • Keine Fahrtkosten (Du bist daheim geblieben). • Honorar nach "Ausfallpauschalen". |
| (Kein Präfix) | Vorort | • Standard: Honorar nach Zeit + Fahrtkosten. |
Beispiel:
- Kalender:
[Ausfall] Gerichtstermin Müller - Tabelle: Spalte
Anlass= "Gerichtstermin Müller", SpalteTyp= "Ausfall", Abrechnung nach Ausfallpauschalen + volle Fahrtkosten.
Der Steuercode wird entfernt und landet nicht in der Tabelle.
Die Beschreibung: Deine Kommandozentrale
Im Notizfeld des Termins kannst Du Daten übergeben, die Google Kalender nicht kennt. Syntax: Schlüssel: Wert
Kunde: Max Mustermann
Aktenzeichen: 123-456
Das System ist flexibel: Jeder Schlüssel, den Du hier schreibst, wird in die gleichnamige Spalte in der Tabelle Aufträge geschrieben. Du kannst also auch eigene Spalten anlegen (z.B. Abteilung, Projekt, etc.) und sie hier füllen.
Die Logik-Engine
Wenn Du auf "DolmiDesk → Aufträge importieren" in der Tabelle klickst, entscheidet das Skript, welche Daten Vorrang haben und wie die Reise berechnet wird.
Das System entscheidet nach folgender Rangfolge, was in einer Zelle landet:
Die "Aus"-Taste
Schreibst Du Einsatzadresse: false, bleibt das Feld leer und die Reise wird nicht berechnet (0 km). Das überschreibt alles.
Diese Regel gilt für jede Spalte. Möchtest Du z.B. einen Empfänger nicht automatisch zuweisen, schreibe Empfänger: false.
Hier ist ein Beispiel-Szenario:
- Szenario: Du bist zu einem Termin gefahren, möchtest aber keine Fahrtkosten abrechnen (z.B. Kulanz).
- Lösung: Schreibe in die Beschreibung:
Einsatzadresse: false - Ergebnis: Das Skript ignoriert die Adresse aus dem Feld "Ort". Die Spalten
FahrdistanzundFahrzeitbleiben leer (0 km).
Manueller Eintrag
Schreibst Du Empfänger: Polizei, wird dieser genommen – egal was in den Stammdaten steht. Dies gilt ebenfalls für alle Felder, auch für die Standard-Felder des Kalenders: zum Beispiel wenn Du Einsatzadresse: Musterstraße 1, Berlin schreibst, wird diese Adresse genutzt. Oder wenn Du einen besonderen Eintrag für Anlass brauchst, kannst Du diesen ebenfalls manuell setzen.
Hier ein Beispiel-Szenario:
- Szenario: Der Kunde "Max Mustermann" hat normalerweise das "Amtsgericht" als Empfänger. Diesmal zahlt aber ausnahmsweise die "Polizei".
- Lösung:
Kunde: Max Mustermann
Empfänger: Polizei Frankfurt - Ergebnis: Das Skript ignoriert den Standard-Empfänger aus den Stammdaten und nimmt Deinen manuellen Eintrag. (Voraussetzung: "Polizei Frankfurt" existiert in Deinen Empfänger-Stammdaten).
Automatische Stammdaten-Logik
Hast Du nichts angegeben, sucht das System: "Welcher Standard-Empfänger gehört zu diesem Kunden?"
Standard Kalender-Daten
Das System nutzt die Daten aus dem Kalender (Titel, Ort, Datum/Zeit), wenn keine der vorherigen Regeln greift.
Das System nutzt nun eine Fuzzy-Suche, um Tippfehler in den Kunden- und Empfängernamen zu korrigieren. Diese Funktion wird nur dann aktiviert, wenn der eingegebene Name nicht mit den vorhandenen Daten in den Stammdaten übereinstimmt.
Wie funktioniert die Fuzzy-Suche?
Wenn Du einen Namen (z.B. Kunde oder Empfänger) im Kalender einträgst, der nicht exakt mit einem Namen in den Stammdaten übereinstimmt, wird das Skript die Levenshtein-Distanz [1] verwenden, um den Namen zu korrigieren. Das bedeutet, dass ähnliche Namen (z. B. Tippfehler oder Abweichungen) automatisch korrigiert werden.
Das Skript prüft auf mögliche Übereinstimmungen und schlägt die am besten passende Korrektur vor. Der korrigierte Name wird dann automatisch in die Tabelle „Aufträge“ übernommen.
Beispiel für eine fehlerhafte Eingabe:
- Eingabe: Kunde:
Max Mustrmann - Korrektur: Das System erkennt den Fehler und korrigiert es auf „Max Mustermann“.
Hinweis: Die Fuzzy-Suche wird nur aktiviert, wenn der Kunde oder Empfänger nicht in den Stammdaten gefunden wird. Die Empfindlichkeit der Fuzzy-Suche kann in der Config-Tabelle angepasst werden.
Die Ketten-Logik (Fahrtkosten)
Das System erkennt, ob Du mehrere Termine an einem Tag hast. Die Regel: Liegen zwischen Ende von Termin A und Start von Termin B weniger als 2 Stunden (konfigurierbar), bilden sie eine Kette.
Szenarien für Fahrtkosten im Detail
Hier die fünf wichtigsten Szenarien:
-
Einzel-Termin:
- Du fährst:
Zuhause → Termin → Zuhause. - Abrechnung: Volle Anreise + Volle Abreise.
- Du fährst:
-
Die Kette (Termin A und B liegen nah beieinander):
- Du fährst:
Zuhause → Termin A → Termin B → Zuhause. - Termin A: Zahlt volle Anreise (von Zuhause). Die Abreise wird fiktiv halbiert, da Du ja nicht nach Hause fährst. Die eine Hälfte der Abreise wird dem nächsten Termin zugerechnet.
- Termin B: Zahlt nur die halbe Anreise (den Weg von A nach B). Zahlt volle Abreise (nach Hause).
- Du fährst:
-
Kette unterbrochen (Pause > 2h):
- Du fährst:
Zuhause → Termin A → Zuhause(2h Pause)Zuhause → Termin B → Zuhause. - Das System nimmt an, Du bist zwischendurch nach Hause gefahren.
- Beide Termine werden als Einzel-Termine berechnet (
Zuhause → A → ZuhauseundZuhause → B → Zuhause).
- Du fährst:
-
Online in der Kette:
- Bei einem
OnlineTermin werden keine Fahrtkosten berechnet, aber es wird davon ausgegangen, dass Du dafür nach Hause fährst. - Wenn Du
Termin A (Vorort) → Termin B (Online) → Termin C (Vorort)hast, wird berechnet, als würdest Du von A nach Hause fahren und für C wieder losfahren (da B keine physische Anwesenheit erfordert).
- Bei einem
-
Absage:
- Bei
AbsageTerminen werden keine Fahrtkosten berechnet und sie werden von der Ketten-Logik ausgeschlossen. Es wird angenommen, dass Du nicht hingefahren bist.
- Bei
Transportmittel steuern
Standardmäßig nutzt das System den Modus aus der Config (Bahn oder Auto). Es ist aktuell nicht möglich, das Transportmittel pro Termin zu steuern. Du kannst jedoch in der Beschreibung des Termins den Schlüssel Transportmittel: false setzen, um die Fahrtkosten-Berechnung komplett zu deaktivieren.
Vollständigkeitsprüfung
Wenn alle Daten eingelesen sind, prüft das System, ob alle notwendigen Felder gefüllt sind, um den Auftrag korrekt abzurechnen. Fehlen wichtige Daten (z.B. Kunde, Einsatzadresse), wird der Eintrag in der Tabelle Aufträge mit dem Status Überprüfen markiert.
Falls ein Eintrag den Status Überprüfen erhält, solltest Du in der Tabelle Aufträge die fehlenden Daten manuell ergänzen, damit der Auftrag korrekt verarbeitet werden kann.
Wenn alle Daten vorhanden sind, wird der Eintrag mit dem Status Bereit markiert und kann für die Rechnungserstellung genutzt werden.
Für die Vollständigkeitsprüfung gelten folgende Regeln:
| Feld | Notwendig für Abrechnung? |
|---|---|
| Kunde | Ja |
| Empfänger | Ja |
| Einsatzdatum | Ja |
| Anlass | Ja |
| Dolmetschzeit Beginn | Ja |
| Dolmetschzeit Ende | Ja |
| Einsatzadresse | Nur bei vor Ort Terminen oder Ausfällen |
| Anreise Start | Nur bei vor Ort Terminen oder Ausfällen |
| Anreise Ende | Nur bei vor Ort Terminen oder Ausfällen |
| Anreisedistanz | Nur bei vor Ort Terminen oder Ausfällen |
| Abreise Start | Nur bei vor Ort Terminen oder Ausfällen |
| Abreise Ende | Nur bei vor Ort Terminen oder Ausfällen |
| Abreisedistanz | Nur bei vor Ort Terminen oder Ausfällen |
Das Ergebnis (Tabelle "Aufträge")
Die importierten Daten landen im Tab Aufträge.

Das Skript arbeitet nach dem Prinzip "Append Only" (Nur Hinzufügen), um Deine manuellen Änderungen nicht zu überschreiben.
Ein perfekter Kalender-Eintrag
So sieht ein vollständig genutzter Eintrag aus:
Titel: Gerichtstermin Herr Müller
Zeit: 09:00 - 11:00
Ort: Gerichtsstraße 2, Frankfurt
Beschreibung:
Kunde: Max Müller
Notiz: Bitte am Eingang warten
Das Skript wird:
- Den Kunden "Max Müller" erkennen und dessen Standard-Empfänger (z.B. "Landgericht") laden.
- Den Anlass "Gerichtstermin Herr Müller" eintragen.
- Die Fahrtzeit mit dem Auto berechnen (weil Standard in der Config).
- Die Fahrtkosten berechnen (Anreise + Abreise).
- Den Standard-Empfänger aus den Stammdaten eintragen.
- Die Notiz ignorieren (da es keine Spalte "Notiz" gibt, außer Du hast sie selbst angelegt).