Ich versuche, einen Google-Kalender mit meiner Rails-Anwendung zu synchronisieren. Ich habe die Dokumentation von Google verfolgt: Synchronize Resources Efficiently.Google Kalender inkrementelle Synchronisierung mit initial time_max
Mein Ziel ist es, Ereignisse nur ein Jahr in die Zukunft zu synchronisieren und wiederkehrende Ereignisse in einzelne Ereignisse aufzuteilen, so dass ich mich nicht mit der Komplexität von Wiederholungsregeln und der Erstellung untergeordneter Ereignisse für wiederkehrende Elternereignisse befassen muss.
Während der ersten Synchronisierung habe ich time_max auf 1 Jahr in der Zukunft eingestellt und während der ersten Synchronisierung bekomme ich nur wiederkehrende Ereignisse bis zu einem Jahr in die Zukunft.
Wenn ich eine inkrementelle Synchronisierung führe, übergebe ich das Sync-Token und erwarte, dass wiederkehrende Ereignisse innerhalb eines Jahres nach der ursprünglichen Synchronisation time_max begrenzt sind, aber das sehe ich nicht. Ich sehe Ereignisse weit nach einem Jahr (~ 10 Jahre).
Während der inkrementellen Synchronisierung konnte ich kein time_max einstellen, da ich diesen erwarteten Fehler von Google erhalte.
Fehler abgefangen syncTokenWithRequestRestrictions: Das Sync-Token kann nicht mit anderen Anforderungseinschränkungen verwendet werden.
Hier ist der Code, den ich verwenden, um Ereignisse von Google in meine Anwendung
def sync_from_google
next_page_token = nil
begin
if sync_token.nil? # full sync
response = @calendar_service.list_events(google_id,
time_min: Time.now.utc.strftime("%FT%TZ"),
time_max: 1.year.from_now.utc.strftime("%FT%TZ"),
single_events: true)
else # incremental sync
response = @calendar_service.list_events(google_id,
sync_token: sync_token,
page_token: next_page_token,
single_events: true)
end
response.items.each do |gevent|
GoogleCalendarEvent.create_event(self.id, gevent, nil)
end
next_page_token = response.next_page_token
rescue Google::Apis::ClientError => error
if error.status_code == 410
self.unsync
end
end while (response.next_sync_token.nil?)
update_attributes(synced: true, sync_token: response.next_sync_token)
end
Bin ich ein Dummy ist zu synchronisieren und offensichtlich etwas fehlt?
Sollten sync_token, die von der anfänglichen Synchronisierung bereitgestellt werden, den Zeitraum der gewünschten Ereignisse speichern?
Gibt es eine andere Möglichkeit, den Zeitbereich der inkrementellen Synchronisierung zu begrenzen?
Haben Sie versucht, das Entfernen 'time_max' zu sehen, ob dies noch auftreten? Ist dies nicht der Fall, kann es sich um einen der Filter handeln, mit denen das Sync-Token nicht verwendet werden kann, wie im [Beispielcode] (https://developers.google.com/google-apps/calendar/v3/sync#sample_code) angegeben. –
SingleEvents = true ist bei incremental sync erlaubt (nur die timeMin und timeMax sind nicht und Sie sollten uninteressante Einträge filtern, die mit incremental sync kommen) – luc