🤖

GoogleカレンダーAPIで削除済みの予定の情報も取得する

2022/04/20に公開

以下のAPIでcalendarIdを指定して予定の一覧を取得することができます。
https://developers.google.com/calendar/api/v3/reference/events/list

syncTokenのあるときとないときで削除済みの予定の扱いが異なっていたので整理します。
syncTokenとは、簡単に言うと予定の差分の取得に使う文字列です。

syncTokenなしのとき

デフォルトでは、削除済みの予定は一覧に含まれません。

パラメータshowDeletedというものがあるのでこれをtrueにすると削除済みの予定も一覧に含まれます。

具体的には以下のように、予定オブジェクトの配列が取得できます。
showDeletedがtureの時、削除済みの予定はstatuscancelledとして取得されます。

[
  // 一つ目の予定
  { updated: '2022-04-03T11: 47: 19.307Z',
  eventType: 'default',
  transparency: 'transparent',
  created: '2022-04-03T11: 47: 19.000Z',
  iCalUID: 'hogehoge@google.com',
  organizer: { email: 'fugafuga@group.calendar.google.com',
     displayName: 'testtest',
     self: true
    },
  kind: 'calendar#event',
  summary: '予定タイトル',
  status: 'confirmed',
  htmlLink: 'https: //www.google.com/calendar/event?eid=aaaaaaa',
  description: 'desctest',
  reminders: { overrides: [
        [Object
        ]
      ], useDefault: false
    },
  sequence: 0,
  end: { date: '2022-05-22'
    },
  etag: '"123456789000"',
  creator: { email: 'abcd@gmail.com'
    },
  id: 'hogehoge',
  start: { date: '2022-05-21'
    }
  },
  // 二つ目の予定
  { end: { date: '2022-04-23'
    },
  sequence: 1,
  summary: 'テストイベント削除済み',
  creator: { email: 'aiueo@gmail.com'
    },
  organizer: { self: true,
     email: 'fugafuga@group.calendar.google.com',
     displayName: 'testtest'
    },
  eventType: 'default',
  iCalUID: 'aaaaaaaaaaaaaaa@google.com',
  status: 'cancelled',
  htmlLink: 'https: //www.google.com/calendar/event?eid=bbbbbbbbbb',
  start: { date: '2022-04-22'
    },
  transparency: 'transparent',
  id: 'aaaaaaaaaaaaaaa',
  kind: 'calendar#event',
  reminders: { overrides: [
        [Object
        ]
      ], useDefault: false
    },
  created: '2022-04-20T00: 16: 46.000Z',
  updated: '2022-04-20T00: 22: 45.733Z',
  etag: '"123456789000"'
  }
]

syncTokenありのとき

syncTokenありのときは、なしのときと違ってデフォルトで削除した予定も取得されます。
ただし、削除済みのものは予定の詳細情報が取得できません。

[
  // 一つ目の予定
  { id: '3abcdefgnvtqttbtka03icb74m',
  etag: '"1234567898000"',
  status: 'cancelled',
  kind: 'calendar#event'
  },
  // 二つ目の予定
  { reminders: { overrides: [
        [Object
        ]
      ], useDefault: false
    },
  updated: '2022-04-20T01: 05: 27.391Z',
  iCalUID: 'hogehogen@google.com',
  transparency: 'transparent',
  start: { date: '2022-04-23'
    },
  creator: { email: 'fugafuga@gmail.com'
    },
  eventType: 'default',
  created: '2022-04-20T01: 05: 27.000Z',
  kind: 'calendar#event',
  etag: '"1234562000"',
  organizer: { displayName: 'aaaaaaaaaaa',
     self: true,
     email: 'abcdefg@group.calendar.google.com'
    },
  summary: 'テスト追加',
  sequence: 0,
  htmlLink: 'https: //www.google.com/calendar/event?eid=Naaaaaaaaaa',
  status: 'confirmed',
  end: { date: '2022-04-24'
    },
  id: 'hogehogen'
  }
]

showDeletedパラメータをtrueでリクエストすると削除済みの予定の詳細も取得できるようになります。

[
  // 一つ目の予定
  { status: 'cancelled',
  start: { date: '2022-04-24'
    },
  kind: 'calendar#event',
  organizer: { email: 'hogehoge@group.calendar.google.com',
     displayName: 'fugafuga',
     self: true
    },
  created: '2022-04-20T01: 09: 56.000Z',
  sequence: 1,
  htmlLink: 'https: //www.google.com/calendar/event?eid=aaaaaaaaaaaaaa',
  etag: '"1111111111111000"',
  summary: 'テスト追加2',
  eventType: 'default',
  end: { date: '2022-04-25'
    },
  transparency: 'transparent',
  id: 'bbbbbbbbbbbbbbbbbbbb',
  updated: '2022-04-20T01: 10: 35.552Z',
  creator: { email: 'hoge@gmail.com'
    },
  reminders: { overrides: [
        [Object
        ]
      ], useDefault: false
    },
  iCalUID: 'bbbbbbbbbbbbbbbbbbbb@google.com'
  },
  // 二つ目の予定
  { sequence: 0,
    organizer: { email: 'hogehoge@group.calendar.google.com',
       displayName: 'fugafuga',
       self: true
    },
    created: '2022-04-20T01: 10: 44.000Z',
    creator: { email: 'hoge@gmail.com'
    },
    status: 'confirmed',
    eventType: 'default',
    kind: 'calendar#event',
    id: '123456788km',
    transparency: 'transparent',
    htmlLink: 'https: //www.google.com/calendar/event?eid=bbbbbbbbbbbbbbbbbbb',
    end: { date: '2022-04-23'
    },
    reminders: { overrides: [
        [Object
        ]
      ], useDefault: false
    },
    updated: '2022-04-20T01: 10: 44.899Z',
    iCalUID: 'abbbbbbbbbbbb@google.com',
    summary: 'テスト追加',
    etag: '"11111111111111000"',
    start: { date: '2022-04-22'
    }
  }
]

Discussion