Closed8

Google Calendarで不在を取得したり、タスクの追加や変更をするには

Naoki SakataNaoki Sakata

現状の開発力はこちらです。

  • 2020年から、Pythonでデータを前処理してEDA整備までは自力でやれていました。
  • 2022年12月に、初めてTypescriptでバックエンドを本格的に担い始めました。
  • ツールはDBeaverやPostman、PyCharmなどを利用しています。
  • 既存プロダクトにSlackとNotionのAPIを連携して、今週はGoogle Calendarをやっつけます。
Naoki SakataNaoki Sakata

ブラウザから探してもevent_idが見当たらないので「不在」はEventsではなさそう。
Freebusyを探してみたが、不在を取得できそうなメソッドが見つからない。

Naoki SakataNaoki Sakata

手探りになりすぎているので、実装したいことを改めて整理する。

  • GET:不在を取得する
  • POST:データベースを参照してタスクを追加する
  • POST:タスクを完了したらデータベースを更新する

まずはGETから片付けたいので、やっぱり不在取得を模索する。

Naoki SakataNaoki Sakata

API ExploerでFreebusyを叩くと、年末年始休暇で入れていた不在を取得できていないことが判明。

  "busy": [
    {
     "start": "2023-01-01T13:27:40+09:00",
     "end": "2023-01-10T07:00:00+09:00"
    },
    {
     "start": "2023-01-10T08:00:00+09:00",
     "end": "2023-01-10T12:00:00+09:00"
    }
]

ただ、Spirでは不在(真ん中の日)が正しく認識されている。

恐らく、異なるメソッドを利用している。

Naoki SakataNaoki Sakata

不在はEvents: listで取得でき、eventTypeoutOfOfficeを参照すれば良いことが分かった。

{
   "kind": "calendar#event",
   "etag": "\"hogehogehoge\"",
   "id": "hogehogehoge",
   ~~~~~~~
   "start": {
    "dateTime": "2022-12-26T00:00:00+09:00",
    "timeZone": "Asia/Tokyo"
   },
   "end": {
    "dateTime": "2023-01-10T00:00:00+09:00",
    "timeZone": "Asia/Tokyo"
   },
   ~~~~~~~
  ,"eventType": "outOfOffice"
  }

ということで必須要件の「GET:不在を取得する」は理解できたので、実装に移る。

このスクラップは2023/01/11にクローズされました