Hallo zusammen,
ich habe einen Weg gefunden das ganze zu umgehen mit ein wenig Google Bastelei.
An dieser Stelle möchte ich das ganze teilen, damit nachfolgende Leute das ganze normal weiter nutzen können, die einen Familienkalender nutzen oder nutzen müssen aus diversen Gründen.
Zuerst einmal, JA es ist richtig, dass die neue Funktion Google Familienkalender der automatisch mit "Google Family" kommt keine Export Funktionalität als ics oder ics URL bietet.
Man kann das ganze allerdings etwas umgehen.
Kurz gesagt, 2. Kalender erstellen und den Familienkalender dahin synchronisieren lassen.
Von dem neu erstellten Kalender kann natürlich wieder ganz normal die private ics Adresse kopiert werden.
Nun zur eigentlichen Sync Funktion.
Über Google Drive könnt ihr ein Skript erstellen, dass den Kalender nachts immer synchronisiert.
https://script.google.com/home/my
Erstellt ein neues Projekt und kopiert den nachfolgenden Code in die Anwendung.
Ändert die Zeilen 5 + 6 zu euren Kalender IDs. Die Kalender IDS findet ihr unter dem Punkt "Kalender integrieren" im Google Kalender über den bekannten Export URL.
Über "Ausführen" könnt ihr das ganze testen, über Ausführungsprotokoll schauen was gerade passiert.
Kurz erklärt, der Kalender entfernt alle Einträge aus dem ZIELKALENDER der nächsten 90 Tage (Zeile 17 konfiguriert)
Danach kopiert er alles neu aus dem QUELLKALENDER in den ZIELKALENDER der nächsten 60 Tage (Zeile 18)
Anschließend klickt ihr links im Menü auf die "Uhr" bzw auf den Punkt "Trigger" dann auf "Trigger hinzufügen" unten rechts in der Ecke.
Stellt anschließend alles wie folgt ein.
Anschließend habt ihr die Einträge im neuen Kalender, blendet diesen Kalender nur noch für euch aus auf dem Computer und Apps, damit ihr den "backup bzw sync" Kalender nicht nutzt, sondern den "normalen richtigen" Familienkalender.
function Sync_Birth_Cal() {
// Calendars adress (ID)
var calendarSource = CalendarApp.getCalendarById("family1234567890@group.calendar.google.com");
var calendarDestination = CalendarApp.getCalendarById("ZIELKALENDER_ID@group.calendar.google.com");
// Start and End Date definition
var Today = new Date();
var StartDeleteDate = new Date();
var EndDeleteDate = new Date();
var StartCopyDate = new Date();
var EndCopyDate = new Date();
StartDeleteDate.setDate(Today.getDate()); // Lösche alle Einträge von heute an
EndDeleteDate.setDate(Today.getDate()+90); // Lösche alle Einträge bis +90 Tage im voraus
StartCopyDate.setDate(Today.getDate()); // Kopiere alle Einträge von heute an
EndCopyDate.setDate(Today.getDate()+60); // Kopiere alle Einträge für die nächsten 60 Tage
// first deletes all datas in calendar
var eventToDelete = calendarDestination.getEvents(StartDeleteDate, EndDeleteDate);
for (var i = 0; i < eventToDelete.length; i++) {
console.log('deleting event ' + i + ' / ' + eventToDelete.length);
eventToDelete[i].deleteEvent();
}
// then copy everything again
var eventToCopy = calendarSource.getEvents(StartCopyDate, EndCopyDate);
console.log('Start copying events from ' + StartCopyDate + ' to ' + EndCopyDate);
for (var t in eventToCopy){
if(eventToCopy[t].isAllDayEvent() === true) {
console.log('Copy event "' + t + ' / ' + eventToCopy.length + ' ' + eventToCopy[t].getTitle() + '" from ' + eventToCopy[t].getAllDayStartDate() + " / " + eventToCopy[t].getAllDayEndDate());
var newEvent = calendarDestination.createEvent(eventToCopy[t].getTitle(), eventToCopy[t].getAllDayStartDate(), eventToCopy[t].getAllDayEndDate());
} else {
console.log('Copy event "' + t + ' / ' + eventToCopy.length + ' ' + eventToCopy[t].getTitle() + '" from ' + eventToCopy[t].getStartTime() + " / " + eventToCopy[t].getEndTime());
var newEvent = calendarDestination.createEvent(eventToCopy[t].getTitle(), eventToCopy[t].getStartTime(), eventToCopy[t].getEndTime());
}
}
}
Nachtrag: Änderung für Termine die ganztägig stattfinden. Gab dabei einen Fehler, aufgrund von Zeitzonen.
Der Familienkalender befindet sich in Zeitzone 2(GMT+00:00) Koordinierte Weltzeit", was nicht geändert werden kann.
Gab deshalb eine Abweichung. Mit der Anpassung passiert das nicht mehr.