Я пытаюсь синхронизировать календарь Google с моим рельсовым приложением. Я слежу за документацией, предоставленной Google: Synchronize Resources Efficiently.Инкрементная синхронизация Google Calendar с начальным временем_макс
Моя цель - только синхронизировать события один год в будущем и разделить повторяющиеся события на отдельные события, чтобы мне не приходилось иметь дело со сложностью правил повторения и создания дочерних событий для повторяющихся родительских событий.
Во время начальной синхронизации я установил time_max в течение 1 года в будущем и во время начальной синхронизации. Я получаю повторяющиеся события до одного года в будущем.
Когда я выполняю инкрементную синхронизацию, я передаю токен синхронизации и ожидаю получить повторяющиеся события, ограниченные в течение одного года от времени_макса начальной синхронизации, но это не то, что я вижу. Я вижу события за последний год (~ 10 лет).
Во время инкрементной синхронизации я не могу установить time_max, поскольку получаю это Ожидаемая ошибка от Google.
Попадание ошибки syncTokenWithRequestRestrictions: токен синхронизации не может использоваться с другими ограничениями на запрос.
Вот код, который я использую для синхронизации событий с Google в моем приложении
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
Могу ли я быть фиктивной и не хватает что-то очевидное?
Должен ли sync_tokens, предоставленный начальной синхронизацией, хранить временной диапазон желаемых событий?
Есть ли другой способ, которым я могу ограничить временной диапазон инкрементной синхронизации?
ли вы попробуйте удалить 'time_max', чтобы увидеть, если это все равно будет происходить? Если нет, это может быть один из токенов синхронизации фильтра, который несовместим с использованием, указанным в [Пример кода] (https://developers.google.com/google-apps/calendar/v3/sync#sample_code). –
SingleEvents = true допускается при инкрементной синхронизации (только времяMin и timeMax отсутствуют, и вы должны опубликовать неинтересные записи, которые поступают с инкрементной синхронизацией) – luc