Google Kalender und Geburtstage aus Kontake

Das ganze ist bei Google aktuell echt eine große Sh*tshow. Nachdem ich das letztes Jahr durch die Erlaubnis die Kontakte synchronisieren zu lassen fixen konnte, sind seit dem 21.01. nun alle Geburtstage wieder verschwunden ohne dass irgendetwas dagegen hilft. Lustig ist, im Samsung Kalender, im Thunderbird Kalender und in der Synchro auf Synology werden die Geburtstage ohne Probleme verarbeitet... Google halt... Wenn für die neuerlichen Probleme jemand einen Quickfix hätte wäre ich da echt dankbar darum.

EDIT:
Habe hier gerade die Lösung gefunden:
https://www.computerbase.de/forum/t...alender-synchronisiert.2225515/#post-30208253
 
Zuletzt bearbeitet:
Meine sind auch verschwunden und jegliches hin und her toggeln und Daten löschen im Kalender sowie den Datendienst verknüpfen führt zu nix. @Nscale danke für den Tip. Bin noch nicht bereit das über ein Script zu machen, auch wenn es funktioniert.
 
Bei mir werden die Geburtstage auch nicht mehr angezeigt. Wenigstens einen Hinweis könnte Google ja einblenden, dass es z. Zt. nicht möglich ist.

Auf dem Smartphone verwende ich aCalendar - da sind die Geburtstage sichtbar ...
 
Habe das gleiche Problem, und hab es gelöst.

Ich habe nur die Google Kontakte, diese habe ich als Datei aufs Handy exportiert und dann zu Samsung Konto importiert. Sodass ich Google Kontakte und Samsung Kontakte habe.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Nscale
chaosnr1 schrieb:
danke für den Tip. Bin noch nicht bereit das über ein Script zu machen, auch wenn es funktioniert.
Was spricht dagegen? Ist doch die deutlich bessere Alternative, als alles mögliche (erfolglos) zu versuchen?
 
  • Gefällt mir
Reaktionen: chaosnr1
Guten Abend zusammen,
hier gibts vermutlich noch keine News / offizielle Lösung ohne Workarounds wie dieses Script, das ich dann doch evtl. mal ausprobieren würde ...
 
@Olunixus Zumindest mir mal nichts bekannt. In den entsprechenden Google-Help Ecken wird davon gesprochen, dass das seitens Google eine Reaktion auf veränderte Datenschutz Gesetze in der EU sei. Kann man glauben, wenn man will... Abseits des Skripts gibt es also bis auf weiteres leider keine Lösung. Außer alle Geburtstage händisch nach tragen.
 
Ich verfolge das Thema auch sehr akribisch, leider gibt's von Google keine Lösung angeboten. Nur das händische eintragen der Geburtstage.
 
Ich habe es über die Feiertage tatsächlich geschafft mir das Skript aus dem Video mal anzuschauen und auszuprobieren. Es war dann doch relativ simpel. Ein paar Sachen funktionieren doch nicht 100%ig, aber da hatte ich ein bisschen Spaß dabei fremden Quellcode zu debuggen und in meiner Kopie vom Projekt entsprechend anzupassen. Einiges was mir aufgefallen ist, wurde auch schon in den Kommentaren vom Video geschrieben, aber ich denke da wird es der Autor schwer haben mit dem Testen, wenn er sich nicht explizit ein "deutsches" Googlekonto mit den entsprechenden Restriktionen (die ja gar nicht so offensichtlich kommuniziert werden) zulegt. Daumen hoch für das Skript von meiner Seite her :-)
 
@Olunixus möchtest Du auch teilen, was nicht funktioniert hat? Ich für meinen Teil kann nach nun nach fast einem Jahr berichten, dass ich mit dem Skript nie auch nur ein Problem hatte und die Geburtstage zuverlässig im entsprechend dafür konfigurierten Kalender eingetragen werden mitsamt Push-Notification. Ist traurig das Google einem das nur noch über Umwege möglich macht...
 
Beim Skript zu berücksichtigen / Änderungen meinerseits
  1. Wenn man die Standardbenachrichtigung wählt (was ich bevorzuge), dann nimmt das Skript für den Termin die "normale Terminbenachrichtigungen" und nicht die "Benachrichtigungen für ganztägige Termine" >> letzteres wäre mir lieber, aber dafür habe ich noch nicht genug Motivation mich durch das Skript / die CalendarAPI Beschreibung zu kämpfen. Weiß nicht ob man da im Skript einen Parameter setzen muss, dass die CalenderAPI das direkt beim erstellen checkt. Wenn ich den Termin im Nachgang anschaue, sitzt der Haken für "ganztägiges Ereignis"
  2. Wenn der Termin "VORNAME NACHNAME hat Geburtstag" heißt, dann bekommt der Termin auch im sekundären Kalender, den man selbst erstellen muss (den Standardgeburtstagskalender nutze ich NICHT), so ein schönes Geburtstagshintergrundbild / wird entsprechend gekennzeichnet (im Originalskript ist es "VORNAME NACHNAME's birthday"
  3. Javascript:
              // Process Birthdays
              const birthdays = connection.birthdays || [];
              birthdays.forEach(birthday => {
                if (calendarNotFound) return;  // Skip processing if calendar not found
                if (GCalTools.shouldProcessDate(birthday.date)) {
                  let title = GCalTools.formatEventTitle(birthdayTitleFormat || `{name} hat Geburtstag`, contactName, "Birthday");
                  let description = addCustomDescriptions ? GCalTools.formatEventTitle(birthdayDescription, contactName, "Birthday") : "";
                  let result = GCalTools.createOrUpdateEvent(calendarService, calendarId, contactName, birthday.date, title, description);
    Zeile 6
  4. Wenn man die Benachrichtigungseinstellung nachträglich ändert, werden bereits bestehende Termine nicht geupdated. Dafür muss man vorher das deleteEvents-Skripts laufen lassen. Könnte aber so gewollt sein.
  5. Das deleteEvents-Skript das löscht die Geburtstage nicht, weil es nach "birthday" im Titel sucht, was bei mir ja mittlerweile aber "Geburtstag" heißt. Anpassung im Skript:
    Javascript:
    function deleteEvents() {  const calendarToDeleteId = useOriginalBirthdayCalendar ? 'primary' : calendarId;
      let patterns = [];
    
      if (useOriginalBirthdayCalendar) {
        // For primary calendar, use the standard pattern that matches the birthday flag
        patterns.push(deleteSearchPattern || "Birthday");
      } else {
        // For secondary calendars, we'll gather labels from contacts in the utility function
        if (deleteSearchPattern) {
          patterns.push(deleteSearchPattern);
        } else {
          patterns.push("Birthday"); // Always include Birthday
        }
        patterns.push("Geburtstag"); // Always include Geburtstag
      }
    
      if (dryRun) {
        Logger.log("DRY RUN MODE: No events will be deleted, only logged");
      }
    
      return GCalTools.deleteEvents(calendarToDeleteId, patterns, deleteOnlyFutureEvents, dryRun);
    }
    Zeile 14 habe ich eingefügt; Zeile 12 wird in meinem Fall nicht durchlaufen, aber stört bei mir nicht.
  6. Javascript:
          for (var i = 0; i < events.length; i++) {
            var event = events[i];
    
            // For primary calendar, use the birthday event type
            var shouldDelete;
    
            if (useOriginalBirthdayCalendar) { shouldDelete = (calendarId === "primary" && event.eventType === "birthday"); }
            else { }
    
            // For secondary calendars ONLY, match against our patterns
            if (!shouldDelete && calendarId !== "primary" && event.summary && patterns && patterns.length > 0) {
              shouldDelete = patterns.some(p => event.summary.includes(p));
            }
    
            if (shouldDelete) {
              if (isDryRun) {
                Logger.log("DRY RUN: Would delete event: " + event.summary);
              } else {
                Calendar.Events.remove(calendarId, event.id);
                Logger.log("Deleted event: " + event.summary);
              }
              eventsDeleted++;
            }
          }
    Hier habe ich Zeile 5-8 angepasst (da war die Zuweisung direkt mit der Definition in Zeile 5), weil das sonst nie mit dem sekundären Kalender durchläuft. Im Rahmen von meinen Versuchen das zu debuggen habe ich noch an ein paar anderen Stellen was eingefügt, sollte aber dann so funktionieren (ist aber ungetestet ;-) )
  7. Wenn man bei einem Kontakt ein "wichtiges Datum" löscht, dann bleiben diese Termine im Kalender stehen, auch mit dem deleteEvents-Skript. Finde ich persönlich gut (Feature, kein Bug), weil wenn doch so ein "wichtiges Datum" dabei sein sollte, stolpert man spätestens im kommenden Jahr drüber und kann da dann den Termin (und ALLE oder alle zukünftigen Einträge) händisch löschen - sollte ja nicht so oft vorkommen.
@Nscale wie viele Kontakte hast du in der Liste / wie viele davon haben Geburtstage eingetragen? Ich habs bisher nur mit einem Googlekonto probiert, was wenig Kontakte und davon nur zwei Kontakte mit "wichtigem Datum"-Einträge hat.
 
  • Gefällt mir
Reaktionen: Nscale
@Olunixus Danke für das Feedback und den Einblick in den Code. Dass sich der Hintergrund in der App nicht an den typischen Geburtstagshintergrund anpasst ist mir zwar aufgefallen, spielt aber wenig eine Rolle da ich den Geburtstagstermin eigentlich nie öffne. Aber nett zu wissen dass das gefixt werden könnte.

In meinem privaten Kalender hate ich eine knapp dreistellige Anzahl an Kontakten. Davon hat jeder mindestens einen Geburtstag hinterlegt, meistens hab ich noch die Geburtsdaten von den Kindern oder so mit beim Hauptkontakt hinterlegt. Wird dann etwas bescheuert im Kalender angelegt mit "[Name Kontakt]´s [Eventname] [hinterlegter Name beim Event]". Hab mich aber dran gewöhnt. Wichtig ist mir lediglich dass ich die Erinnerung bekomm. Das ließe sich sicher auch fixen im Script, aber dafür bin ich zu wenig Programmierer.
 
Wie kann ich mir "[Name Kontakt]´s [Eventname] [hinterlegter Name beim Event]" vorstellen?
"Max Mustermann's Kindgeburtstag Mustertochter"

Für so einen Fall lege ich manchmal einen neuen Kontakt an und trage dort den Geburtstag ein. Und dieser Kontakt hat dann halt weder Telefonnummer noch Emailadresse...
 
Ja recht genau so. Ich hinterlege in den Kontakten bei "Weiteres Datum" dann ein Event mit benutzdefiniertem Lable und benenne dies dann mit "Geburtstag XY".

Man kann natürlich auch einen neuen Kontakt anlegen, das bläht das Kontaktbuch dann aber auch unnötig auf.
 
Zurück
Oben