* English version below
Author: JohnDOEbug
Publishing time: 11-2024
Das Google Apps Script "anniversariesGoogleCalendar.gs" synchronisiert Geburtstage und besondere Ereignisse aus Google Kontakten mit einem ausgewählten Google Kalender. Es ruft alle relevanten Kontaktdaten (Name, Ereignisse, Ressourcen-ID) ab und vergleicht sie mit bestehenden Kalendereinträgen. Bei Bedarf werden Einträge hinzugefügt oder gelöscht, um den Kalender aktuell zu halten. Jeder Kalendereintrag ist eine jährlich wiederkehrende Terminserie, die im aktuellen Jahr beginnt. Die Ressourcen-ID jedes Kontakts wird in der Terminbeschreibung gespeichert und ermöglicht eine eindeutige Zuordnung zwischen Kontakt und Termin. Optional wird der Benutzer per E-Mail über die Erstellung und Löschung von Ereignissen informiert.
- Öffne Google Apps Script und lege ein neues Projekt an.
- Kopiere den Inhalt des Skripts anniversariesGoogleCalendar.gs in das Projekt.
- Füge die People API hinzu ([+ Dienste] > [Peopleapi] [v1] > [Hinzufügen]).
- Öffne Google Kalender und erstelle einen neuen Kalender ([+ Weitere Kalender] > [Neuen Kalender erstellen] > Namen eingeben > [Kalender erstellen]).
- Ermittele die Kalender-ID (Kalender links auswählen > [Kalendereinstellungen] > Kalender-ID).
- Setze den Wert der Variable
calendarId
im Skript anniversariesGoogleCalendar.gs auf die ermittelte Kalender-ID, durch ersetzen des Platzhaltersxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com
. - Optional: Kopiere die eigene E-Mail-Adresse in den Wert der Variable
recipientEmail
(z. B.:var recipientEmail = '[email protected]';
). - Führe das Skript einmalig manuell aus (> [Ausführen]) und akzeptiere die angeforderten Berechtigungen (Kontakte, Kalender und E-Mails). Die Warnung "Google hat diese App nicht überprüft" muss akzeptiert werden, wobei unter Entwickler der eigene Google-Account genannt sein sollte (> [Erweitert] > [Unbekanntes Projekt öffnen (unsicher)]). Nach der Ausführung des Skripts (siehe Ausführungsprotokoll im unteren Bereich des Fensters) sollten bereits alle Termine im Kalender erstellt worden sein.
- Setze einen Trigger für das Projekt (z. B.: Links [Trigger] auswählen > [Trigger hinzufügen] > Auszuführende Funktion: anniversaryEvents, Ereignisquelle: Zeitgesteuert, Zeitbasierter Trigger: Tagestimer, Tageszeit: 8:00 bis 9:00 Uhr > [Speichern]). Nun wird das Skript, abhängig vom Trigger, z. B. täglich ausgeführt.
The Google Apps Script "anniversariesGoogleCalendar.gs" synchronizes birthdays and special events from Google Contacts with a selected Google Calendar. It retrieves all relevant contact information (name, events, resource ID) and checks it against existing calendar entries. Entries are added or removed as needed to keep the calendar up-to-date. Each calendar entry is set as a series with yearly events, starting in the current year. The resource ID of each contact is stored in the event description to ensure a unique link between the contact and the event. Optionally, the user can receive email notifications for the creation and deletion of events.
- Open Google Apps Script and create a new project.
- Copy the contents of the script anniversariesGoogleCalendar.gs into the project.
- Add the People API ([+ Services] > [Peopleapi] [v1] > [Add]).
- Open Google Calendar and create a new calendar ([+ Other calendars] > [Create new calendar] > Enter a name > [Create calendar]).
- Retrieve the calendar ID (select the calendar on the left > [Calendar settings] > Calendar ID).
- Set the variable
calendarId
in the script anniversariesGoogleCalendar.gs to the retrieved calendar ID by replacing the placeholderxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@group.calendar.google.com
. - Optionally, copy your own email address into the
recipientEmail
variable (e.g.,var recipientEmail = '[email protected]';
). - Run the project manually once (> [Run]) and accept the requested permissions (Contacts, Calendar, and Email). You will need to accept the "Google hasn’t verified this app" warning, ensuring your own Google account appears under Developer (> [Advanced] > [Go to Untitled project (unsafe)]). After the script completes (see the Execution Log at the bottom of the window), all calendar events should already be created.
- Set a trigger for the project (e.g., select [Triggers] on the left > [Add Trigger] > Function to run: anniversaryEvents, Event source: Time-driven, Time based trigger: Day timer, Time of day: 8am to 9am > [Save]). The script will now run according to the trigger, e.g., daily.