Auf dieser Seite wird erläutert, wie Sie mit der Google Calendar API Termine erstellen, in denen Status von Google Kalender-Nutzern angezeigt. Statusereignisse beschreiben, wo sich Nutzer gerade was sie tun, z. B. ob sie in Fokuszeit, abwesend oder die von einem bestimmten Standort aus arbeiten.
In Google Kalender können Nutzer Fokuszeit, Abwesenheit und Standortereignisse verwenden, um ihren benutzerdefinierten Status und Standort anzugeben. Diese Funktionen sind nur in primären Kalendern und für einige Google Kalender-Nutzer verfügbar.
Weitere Informationen finden Sie unter Fokuszeit in Google verwenden Kalender und Arbeitsort aktivieren oder deaktivieren für verwenden.
Kalenderstatusereignisse lesen und auflisten
In der
Events
-Ressource des
Calendar API
Verwenden Sie zum Lesen eines Statusereignisses den
events.get
-Methode unter Angabe der
eventId
des Termins.
Verwenden Sie zum Auflisten von Statusereignissen die
Methode events.list
, wobei eine angegeben wird
oder mehrere der folgenden Werte im
eventTypes
-Feld:
'focusTime'
'outOfOffice'
'workingLocation'
Prüfen Sie dann in den zurückgegebenen Event
-Objekten, ob die
Das Feld eventType
enthält
den angefragten Wert aus. Im entsprechenden Feld finden Sie Details zum
Status, der vom Nutzer in Google Kalender erstellt wurde:
Änderungen an Statusereignissen abonnieren
Sie können Änderungen an Statusereignissen in der
Events
-Ressource des
Calendar API
Verwenden Sie die Methode
events.watch
-Methode unter Angabe der
calendarId
von
Kalender, den Sie abonnieren möchten, und einen oder mehrere der folgenden Werte im
eventTypes
:
'focusTime'
'outOfOffice'
'workingLocation'
Kalender-Statusereignisse erstellen und aktualisieren
Um ein Statusereignis zu erstellen, erstellen Sie eine Instanz des
Events
-Ressource mithilfe des
events.insert
, indem Sie die
Pflichtfelder für den Ereignistyp.
Wenn Sie das Statusereignis mit
events.update
, das Ereignis
müssen die Pflichtfelder beibehalten.
Fokuszeit erstellen
So erstellen Sie einen Fokuszeit-Termin:
eventType
festlegen auf'focusTime'
.- Fügen Sie die
focusTimeProperties
ein. - Legen Sie die
transparency
fest. auf'opaque'
. start
undend
-Feldern in ein zeitgesteuertes Ereignis (mit Start- und Endzeit).
Fokuszeiten können keine ganztägigen Termine sein.
Weitere Informationen zu den Funktionen finden Sie unter Fokuszeit in Google verwenden Kalender
Abwesenheitsnotiz erstellen
So erstellen Sie einen Außer-Haus-Termin:
eventType
festlegen auf'outOfOffice'
.- Fügen Sie die
outOfOfficeProperties
ein. - Legen Sie die
transparency
fest. auf'opaque'
. start
undend
-Feldern in ein zeitgesteuertes Ereignis (mit Start- und Endzeit).
Außer-Haus-Termine können keine ganztägigen Termine sein.
Weitere Informationen zu dieser Funktion finden Sie unter Anzeigen, wenn keine Büro
Arbeitsort erstellen
So erstellen Sie einen Termin am Arbeitsort:
eventType
festlegen auf'workingLocation'
.- Fügen Sie die
workingLocationProperties
ein. - Legen Sie das Feld
visibility
fest. an'public'
. - Legen Sie die
transparency
fest. auf'transparent'
. -
- Ein zeitgesteuertes Ereignis (mit angegebenem Beginn und Ende)
- Ein ganztägiger Termin (mit Start- und Enddatum), der folgende Tage umfasst: genau einem Tag.
Ganztägige Termine am Arbeitsort können nicht mehrere Tage umfassen, aber zeitlich festgelegte Termine können.
Die folgenden Felder sind optional, werden aber für eine optimale Nutzererfahrung empfohlen
beim Einfügen eines
officeLocation
:
workingLocationProperties.officeLocation.buildingId
: Dies sollte mit einerbuildingId
in der Ressourcen Datenbank. So profitieren Nutzer von allen Funktionen von Google Kalender, z. B. Raumvorschläge.workingLocationProperties.officeLocation.label
: Dieses Label wird in der Webversion von Google Kalender und in mobilen Clients angezeigt. Ich Gebäude-IDs und Gebäude-Labels mithilfe der Funktionresources.buildings.list
.
Das Erstellen und Aktualisieren von Arbeitsort-Ereignissen über die Batch-Endpunkte unterstützt.
Weitere Informationen zu den Funktionen finden Sie unter Arbeitszeit festlegen und Standort und Arbeitsort aktivieren oder deaktivieren für Nutzer
Sich überschneidende Termine am Arbeitsort anzeigen
Nutzer können in ihrem Kalender mehrere Termine am Arbeitsort gleichzeitig haben die sich überschneiden, d. h. eine bestimmte Zeit kann mehrere die für die Kampagne festgelegt wurden. Wenn nur ein einzelner Standort angezeigt werden kann sollte der Standort dem Nutzer über mehrere Anwendungen. Beachten Sie dabei die folgenden Richtlinien, um auszuwählen, welche anzuzeigendes Ereignis:
- Zeitgesteuerte Ereignisse dauern Vorrang vor ganztägigen Terminen.
- Einzelne Termine haben Vorrang vor wiederkehrenden Terminen und den Ausnahmen.
- Ereignisse, die später beginnen, haben Vorrang vor Ereignissen, die früher beginnen.
- Ereignisse mit kürzerer Dauer haben Vorrang vor Ereignissen mit einer längeren Dauer Dauer.
- Neuere Ereignisse haben Vorrang vor neu erstellten Ereignissen. zuvor.
- Teilweise überschneidende Ereignisse sollten jeweils als zwei verschiedene Ereignisse angezeigt werden mit einem eigenen Arbeitsort.
Statusereignisse in Google Apps Script erstellen
Google Apps Script ist eine JavaScript-basierte Cloud Scripting-Sprache, mit der Sie Geschäftsanwendungen erstellen können, die sich Google Workspace Skripts werden in einem browserbasierten Code-Editor entwickelt. werden sie auf den Servern von Google gespeichert und ausgeführt. Siehe auch Google Apps Script Apps Script, um Anfragen an die Google Calendar API zu senden
In der folgenden Anleitung wird beschrieben, wie Sie Statusereignisse mithilfe der Google Calendar API als erweiterter Dienst in Google Apps Script. Eine vollständige Liste der Ressourcen und Methoden der Google Calendar API finden Sie in der Referenzdokumentation.
Skript erstellen und einrichten
- Erstellen Sie ein Skript, indem Sie script.google.com/create.
- Klicken Sie im linken Bereich neben Dienste auf „Dienst hinzufügen“.
- Wählen Sie Google Calendar API aus und klicken Sie auf Hinzufügen.
- Nach der Aktivierung wird die API im linken Bereich angezeigt. Verfügbare Methoden und Klassen in der API können mit dem Schlüsselwort Kalender im Editor aufgelistet werden.
(Optional) Google Cloud-Projekt aktualisieren
Jedes Google Apps Script-Projekt ist mit einem Google Cloud-Projekt verknüpft. Ihr Skript kann das Standardprojekt verwenden, das Google Apps Script automatisch erstellt. Wenn Sie ein benutzerdefiniertes Google Cloud-Projekt verwenden möchten, führen Sie die folgenden Schritte aus um das mit Ihrem Skript verknüpfte Projekt zu aktualisieren.
- Klicken Sie links im Editor auf „Project Settings“ (Projekteinstellungen)
- Klicken Sie unter Google Cloud Platform-Projekt (GCP-Projekt) auf Projekt ändern.
- Geben Sie die Projektnummer des Google Cloud-Projekts ein, das sich im Entwicklerbereich befindet Vorschauprogramm aus und klicken Sie auf Projekt festlegen.
- Wählen Sie links „Editor “ aus, zurück zum Code-Editor.
Code in das Skript einfügen
Das folgende Codebeispiel zeigt, wie Statusereignisse erstellt, gelesen und aufgelistet werden in Ihrem Hauptkalender.
Fügen Sie Folgendes in den Code-Editor ein.
<ph type="x-smartling-placeholder">/** Creates a focus time event. */ function createFocusTime() { const event = { start: { dateTime: '2023-11-14T10:00:00+01:00' }, end: { dateTime: '2023-11-14T12:00:00+01:00' }, eventType: 'focusTime', focusTimeProperties: { chatStatus: 'doNotDisturb', autoDeclineMode: 'declineOnlyNewConflictingInvitations', declineMessage: 'Declined because I am in focus time.', } } createEvent(event); } /** Creates an out of office event. */ function createOutOfOffice() { const event = { start: { dateTime: '2023-11-15T10:00:00+01:00' }, end: { dateTime: '2023-11-15T18:00:00+01:00' }, eventType: 'outOfOffice', outOfOfficeProperties: { autoDeclineMode: 'declineOnlyNewConflictingInvitations', declineMessage: 'Declined because I am on vacation.', } } createEvent(event); } /** Creates a working location event. */ function createWorkingLocation() { const event = { start: { date: "2023-06-01" }, end: { date: "2023-06-02" }, eventType: "workingLocation", visibility: "public", transparency: "transparent", workingLocationProperties: { type: 'customLocation', customLocation: { label: "a custom location" }, } } createEvent(event); } /** * Creates a Calendar event. * See https://developers.google.com/calendar/api/v3/reference/events/insert */ function createEvent(event) { const calendarId = 'primary'; try { var response = Calendar.Events.insert(event, calendarId); var event = (response.eventType === 'workingLocation') ? parseWorkingLocation(response) : response; console.log(event); } catch (exception) { console.log(exception.message); } } /** * Reads the event with the given eventId. * See https://developers.google.com/calendar/api/v3/reference/events/get */ function readEvent() { const calendarId = 'primary'; // Replace with a valid eventId. const eventId = "sample-event-id"; try { var response = Calendar.Events.get(calendarId, eventId); var event = (response.eventType === 'workingLocation') ? parseWorkingLocation(response) : response; console.log(event); } catch (exception) { console.log(exception.message); } } /** Lists focus time events. */ function listFocusTimes() { listEvents('focusTime'); } /** Lists out of office events. */ function listOutOfOffices() { listEvents('outOfOffice'); } /** Lists working location events. */ function listWorkingLocations() { listEvents('workingLocation'); } /** * Lists events with the given event type. * See https://developers.google.com/calendar/api/v3/reference/events/list */ function listEvents(eventType = 'default') { const calendarId = 'primary' // Query parameters for the list request. const optionalArgs = { eventTypes: [eventType], showDeleted: false, singleEvents: true, timeMax: '2023-04-01T00:00:00+01:00', timeMin: '2023-03-27T00:00:00+01:00', } try { var response = Calendar.Events.list(calendarId, optionalArgs); response.items.forEach(event => console.log(eventType === 'workingLocation' ? parseWorkingLocation(event) : event)); } catch (exception) { console.log(exception.message); } } /** * Parses working location properties of an event into a string. * See https://developers.google.com/calendar/api/v3/reference/events#resource */ function parseWorkingLocation(event) { if (event.eventType != "workingLocation") { throw new Error("'" + event.summary + "' is not a working location event."); } var location = 'No Location'; const workingLocation = event.workingLocationProperties; if (workingLocation) { if (workingLocation.type === 'homeOffice') { location = 'Home'; } if (workingLocation.type === 'officeLocation') { location = workingLocation.officeLocation.label; } if (workingLocation.type === 'customLocation') { location = workingLocation.customLocation.label; } } return `${event.start.date}: ${location}`; }
Codebeispiel ausführen
- Wählen Sie über dem Code-Editor die auszuführende Funktion aus dem Dropdown-Menü aus. und klicken Sie auf Ausführen.
- Bei der ersten Ausführung werden Sie aufgefordert, den Zugriff zu autorisieren. Prüfen und erlauben Apps Script, um auf Ihren Kalender zuzugreifen.
- Die Ergebnisse der Skriptausführung können Sie in der Ausführungsprotokoll, das unten im Fenster angezeigt wird.