LoginSignup
3
2

More than 3 years have passed since last update.

Google Calendar API の予定の登録を Google OAuth 2.0 を使って、curl コマンドから実行してみる

Posted at

Google Calendar への予定登録を curl を使って試した時の備忘録です。

まず、下記の公式サイトにアクセスします。
このページは、Google Calendar APIを使っての予定の登録はこのページを参考にしてという内容が書いてあります。
https://developers.google.com/calendar/v3/reference/events/insert

アクセスするとこのような画面になるので、右側の「Try it!」というボタンをクリックします。
image.png

次に右側の拡大ボタンをクリックします。
image.png

すると、Request parameters と Request body を入力する画面が表示されるので、必要な個所を入力していきます。
image.png

必須項目

公式サイトを読むと
Request parameters には、calendarId が必須、
Request body には、end と start が必須
と記載されていました。
なので、そこの部分を埋めていきます。

入力

今回は、下記のようにしてみます。せっかくなので、summaryも追加して、予定名も付けました。
Request parameters
calendarId : primary

Request body
{
"end": {
"dateTime": "2021-01-11T23:00:00+09:00"
},
"start": {
"dateTime": "2021-01-11T21:00:00+09:00"
},
"summary": "Google Calendar API テスト"
}

入力したら、画面下の「EXECUTE」ボタンをクリックします。(API key のチェックは外しています。)
image.png

下記のように、緑の中が200となっていたら成功です。
image.png

Google Calendar を開いてみると、正しく登録できているのが確認できました。
image.png

本題のcurlコマンドを使って予定の登録を行っていきます。

まず、画面のcURLタブのコマンドをコピーします。
image.png

コピーしたコマンドが Linux 環境向けだったので、Git Bashを開いて貼り付けました。
※access_toeknは事前に取得していたアクセストークンを張り付けています。

$ curl --request POST \
>   'https://www.googleapis.com/calendar/v3/calendars/primary/events' \
>   --header 'Authorization: Bearer ya29.a0AfH6SMCWXNZ5EAu6vv4QLbKyy_eq_ZeNFFxsS--djodFSFoAUjX_6jHa-CTGyVM4I2UH8jHSTlmByfwVXbCc4BQJBcRKTLhnD3vYNunDwhXt8FGTgx9Ek627Rf7RVOfNvrjua4NkSYkse-5yYxdhsTMuoOT6po5suyxhR9l6ptc' \
>   --header 'Accept: application/json' \
>   --header 'Content-Type: application/json' \
>   --data '{"end":{"dateTime":"2021-01-11T23:00:00+09:00"},"start":{"dateTime":"2021-01-11T21:00:00+09:00"},"summary":"Google Calendar API TEST"}' \
>   --compressed
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   871  100   737  100   134    471     85  0:00:01  0:00:01 --:--:--   557{
 "kind": "calendar#event",
 "etag": "\"3219531517408000\"",
 "id": "bkt13a929n6tsqjd5b2otnapi8",
 "status": "confirmed",
 "htmlLink": "https://www.google.com/calendar/event?eid=Ymt0MTNhOTI5bjZ0c3FqZDViMm90bmFwaTggZ3V5Lm5pY2VndXkxMjM0NUBt",
 "created": "2021-01-04T13:09:18.000Z",
 "updated": "2021-01-04T13:09:18.704Z",
 "summary": "Google Calendar API TEST",
 "creator": {
  "email": "guy.niceguy12345@gmail.com",
  "self": true
 },
 "organizer": {
  "email": "guy.niceguy12345@gmail.com",
  "self": true
 },
 "start": {
  "dateTime": "2021-01-11T21:00:00+09:00"
 },
 "end": {
  "dateTime": "2021-01-11T23:00:00+09:00"
 },
 "iCalUID": "bkt13a929n6tsqjd5b2otnapi8@google.com",
 "sequence": 0,
 "reminders": {
  "useDefault": true
 }
}

Response の中身を見てもわかる通り、正しく予定を登録することができました。
image.png

苦労したことメモ

・RFC3339 でのJST の指定の仕方が分からなかった。
 →「YYYY-MM-DDTHH:MM:SS+09:00」と打てばよい。
 例)2021-01-11T21:00:00+09:00
・Git bash でcurlコマンドから予定を登録するときに、summaryに日本語文字を使うと文字化けして登録される。
 「chcp.exe 65001」、「chcp.exe 932」を実行して文字コードを変えてみても、どちらもうまくいかなかった。
 →未解決です。

3
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2