구글 Calendar API Events:watch에서 사용할 수 없는 달력이 있습니다.

@koshi_life.

TL;DR


Google Calendar API 사용Events:watch
특정 캘린더에 대한 변경 공지(Push Notification)를 받을 수 있지만 Google에서 제공하는 국가 공휴일 등의 캘린더에는 Watch를 설정할 수 없습니다.
공식 문서는 웹에 정보가 많지 않기 때문에 잊어버린다.

샘플 스크립트(Ruby)


CalendarWatcher.rb
class CalendarWatcher

  CALLBACK_URL = 'https://YOUR_SITE'

  # client: Google::Apis::CalendarV3::CalendarService
  # calendar_id: [email protected]
  def self.start(client, calendar_id)
    # Watchする対象期間は3日後とします。
    expiration = Time.now.strftime('%s%L').to_i + (1000 * 60 * 60 * 24 * 3)

    # Events:watch リクエストパラムの準備
    req = Google::Apis::CalendarV3::Channel.new
    req.id = SecureRandom.uuid
    req.type = 'web_hook'
    req.address = CALLBACK_URL
    req.expiration = expiration.to_s

    # Event:watch コールします。
    client.watch_event(calendar_id, req)
  end

end

탐색할 수 있는 달력

irb(main):00x:0> email = '[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
=> #<Google::Apis::CalendarV3::Channel:xxx @id="d81482a7-300a-4c24-8242-39c213f89f22", @expiration=1552330683000, @kind="api#channel", @resource_id="xxxxxxxxxxxxxxx", @resource_uri="https://www.googleapis.com/calendar/v3/calendars/[email protected]/events?maxResults=250&alt=json">

Watch 달력 1 "Not Fund" 없음


참조 권한이 없는 캘린더에 대해 Watch 요청을 하는 동안 Not Fund에서 오류가 발생했습니다.
irb(main):00x:0> email = '[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
Traceback (most recent call last):
        3: from (irb):5
        2: from (irb):5:in `rescue in irb_binding'
        1: from CalendarWatcher.rb:xx: in `start'
Google::Apis::ClientError (notFound: Not Found)

Watch 달력 2는 사용할 수 없습니다. "Push notifications are not supported by this resource"

irb(main):00x:0> email = 'ja.japanese#[email protected]'
irb(main):00x:0> CalendarWatcher.start(client, email)
Traceback (most recent call last):
        2: from (irb):3
        1: from
CalendarWatcher.rb:xx: in `start'
Google::Apis::ClientError (pushNotSupportedForRequestedResource: Push notifications are not supported by this resource.)
Push Not Supported For Requested Resource 에서 설명한 대로 이 정보는 Push Not Supported For Requested Resource 에 알릴 수 없는 캘린더 리소스입니다.
또한 Google에서 제공하는 다음 달력에서는 Watch를 설정할 수 없습니다.같은 오류가 발생하다.
  • 일본 명절: ja.japanese#[email protected]
  • 그해의 경과일수: #[email protected]
  • Los Angeles Dodgers: mlb_19_%4cos+%41ngeles+%44odgers#[email protected]
  • Boston Red Sox: mlb_2_%42oston+%52ed+%53ox#[email protected]
  • 아마도 Google 달력에서 추가할 수 있는 Google 달력 역시 Watch로 설정할 수 없을 것입니다.

    추송 알림을 설정할 수 없는 달력이 있으니 고민하는 게 좋다는 것이다.
    그보다 MLB 달력이 공개된 것은 깜짝 놀랐다.

    좋은 웹페이지 즐겨찾기