Eine Zeitfenster-Auswahl im Salesforce-Kalender bauen
Salesforce bietet eine Datumsauswahl und ein Uhrzeitfeld. Ein Raster wählbarer Zeitfenster bietet es nicht. Hier steht, was eine echte Zeitfenster-Auswahl in Salesforce braucht und wie Sie eine bekommen, ohne sie selbst zu bauen.
Eine Zeitfenster-Auswahl ist eine ganz bestimmte Oberfläche: ein Kalender, in dem Sie einen Tag wählen, und darunter ein Raster, das diesen Tag in buchbare Intervalle teilt, wobei belegte sichtbar nicht verfügbar sind. Jeder kennt sie, weil jede Buchungsseite im Internet sie nutzt. Salesforce liefert keine mit.
Was Salesforce tatsächlich mitbringt
Ein Standardfeld vom Typ Datum/Uhrzeit erscheint als Datumseingabe plus Uhrzeit-Dropdown. Es ist ein Formularelement und weiß nicht, was sonst gebucht ist. Nichts hindert einen Benutzer daran, ein längst vergebenes Zeitfenster zu wählen, denn das Feld weiß nicht, dass es andere Datensätze gibt. Diese Prüfung passiert erst später, in einer Validierungsregel oder einem Flow, wenn der Benutzer sich schon entschieden hat.
Genau da liegt die Lücke. Eine Zeitfenster-Auswahl fragt vorhandene Datensätze ab, bevor der Benutzer wählt, und bietet nur an, was frei ist.
Was eine echte Zeitfenster-Auswahl können muss
| Anforderung | Standardfelder | Mit MultiDatePick |
|---|---|---|
| Den Tag in Intervalle teilen | Kennt keine Intervalle | Jedes Intervall (üblich sind 15, 30 oder 60 Minuten) |
| Die Arbeitszeit kennen | Jede Uhrzeit ist gültig | Früheste und späteste Uhrzeit oder Geschäftszeiten je Ressource |
| Zeigen, was belegt ist | Es wird nichts gezeigt | Vorhandene Buchungen erscheinen im Raster |
| Mehrere Personen pro Zeitfenster | Nicht abbildbar | Kapazität mit Live-Anzeige gebucht/verfügbar |
| Unterschiedliche Zeiten an verschiedenen Tagen | Ein Feld, ein Wert | Unterschiedliche Zeiten zulassen |
| Überschneidung beim Speichern verhindern | Nur mit eigener Logik | Konfliktverhalten: block, skip oder allow |
Warum der Eigenbau mehr Arbeit ist, als es aussieht
Die Darstellung ist der einfache Teil. Diese Teile plant niemand ein:
Buchungen abfragen
Effizient, ohne Governor Limits zu sprengen, wenn jemand eine Zwei-Monats-Ansicht öffnet.
Überlappungen berechnen
Knifflig, sobald Buchungen unterschiedlich lang sein können.
Zeitzonen
Die Zeitzone des Benutzers und die des Datensatzes sind nicht immer gleich.
Race Conditions
Zwei Personen sehen im selben Moment dasselbe freie Zeitfenster.
Sicherheit auf Feldebene
Die Komponente muss beachten, was der aktuelle Benutzer sehen darf.
Barrierefreiheit
Ein Raster aus klickbaren Divs lässt sich standardmäßig nicht per Tastatur bedienen.
Barrierefreiheit braucht die meiste Sorgfalt. Ein Zeitfenster-Raster braucht echte ARIA-Grid-Semantik, Navigation mit den Pfeiltasten und einen Zustand, der nicht nur über Farbe vermittelt wird. Genau diesen Teil lassen die meisten Eigenbauten weg, und genau danach fragt ein Einkaufsreview.
Zeitfenster so gruppieren, dass man sie überblickt
Ein Tag von 9 bis 17 Uhr in 15-Minuten-Intervallen hat 32 Zeitfenster. Als flache Liste ist das eine Wand. Gruppiert nach Tageszeit (Vormittag, Nachmittag, Abend) werden daraus drei kurze Blöcke. Das hilft am meisten, wenn ein Kunde auf dem Smartphone wählt.
Wenn Sie den Kalender gar nicht brauchen
Manchmal steht das Datum schon fest. Auf der Datensatzseite eines Termins, der bereits ein Datum hat, ist ein Monatskalender überflüssig. Nur Zeitraster blendet den Kalender aus und zeigt nur das Zeitfenster-Raster für dieses eine Datum, entnommen aus einem Feld des Datensatzes oder direkt gesetzt.
Die Einstellungen hinter der Auswahl
Jede davon ist ein Feld im Einrichtungsassistenten. Nichts davon braucht Code.
| Einstellung | Funktion | API-Name |
|---|---|---|
| Zeitintervall in Minuten (Time Slot Interval (Minutes)) | Die Länge jedes Zeitfensters. Beliebig viele Minuten. | timeInterval |
| Minimalzeit / Maximalzeit (Earliest Time / Latest Time) | Der Zeitraum, den das Raster in der Komponente Dates & Times abdeckt. | minTime, maxTime |
| Geschäftszeiten-Start- / Endfeld (Business Hours Start / End Field) | Arbeitszeiten je Ressource in der Komponente Booking. | businessHoursStartField |
| Kapazitätsfeld (Capacity Field) | Wie viele Buchungen eine Ressource pro Zeitfenster aufnimmt. | capacityField |
| Zeitfenster nach Tageszeit gruppieren (Group Time Slots by Period) | Abschnitte für Vormittag, Nachmittag und Abend. | groupTimeSlotsByPeriod |
| Konfliktverhalten (Conflict Behavior) | Eine Überschneidung beim Speichern blockieren, überspringen oder zulassen. | conflictBehavior |
| Nur Zeitraster (Time Grid Only) | Nur das Zeitfenster-Raster, für ein vorgegebenes Datum. | timeGridOnly |
Häufige Fragen
Was ist eine Zeitfenster-Auswahl im Kalender?
Ein Kalender, in dem Sie einen Tag wählen, darunter ein Raster, das den Tag in buchbare Intervalle teilt. Bereits belegte Zeitfenster erscheinen als nicht verfügbar, sodass nur freie Zeiten gewählt werden.
Hat Salesforce eine Zeitfenster-Auswahl?
Nicht für Ihre eigenen Objekte. Ein Standardfeld vom Typ Datum/Uhrzeit ist eine Datumseingabe plus Uhrzeit-Dropdown und sieht keine anderen Datensätze. MultiDatePick bringt eine Zeitfenster-Auswahl mit, die beim Laden des Kalenders vorhandene Buchungen liest und nur anbietet, was frei ist.
Können die Zeitfenster beliebig lang sein?
Ja. Das Intervall ist eine beliebige Zahl von Minuten. Üblich sind 15, 30 oder 60 Minuten, und ein 45-Minuten-Zeitfenster für Vorstellungsgespräche funktioniert genauso.
Brauche ich Apex oder einen Entwickler für eine Zeitfenster-Auswahl?
Nein. Der Einrichtungsassistent schreibt die Konfiguration, und die Komponente kommt über Config Name auf eine Datensatzseite, eine App-Seite, eine Experience Cloud-Site oder in einen Bildschirm-Flow (Screen Flow). Code müssen Sie keinen schreiben.
Ihre Zeitfenster-Auswahl für Salesforce, bereit zur Konfiguration
Wählen Sie in der Live-Demo ein freies Zeitfenster, und folgen Sie dann den ersten Schritten, um eine in Ihre Org zu bringen.
- $20/Benutzer/Monat, alle Funktionen
- 30 Tage kostenlos, ohne Kreditkarte
- 100 % nativ in Salesforce
- Ohne Apex
- Demnächst auf der Salesforce AppExchange