背景
サーバサイドでGoogle Calendarを使うとき、ユースケースとしては例えば
- ユーザのデータをカレンダーに登録する
- サーバ自体の情報をカレンダーに登録する
が考えられる。多くのサンプルは前者のようだが、バッチから公開用のカレンダーを更新するために後者を調べた。
"two-legged OAuth"(2LO)によりサーバ間だけで認証できる。(認証画面が出ない)
google-api-clientは未だalpha版のようである。また、google-api-clientのうち、認証部分はdeprecatedでありgoogle-auth-library-ruby(googleauth)が推奨となっている。
準備1: Google Cloud Console
- Ruby Quickstart
- Google Cloud Consoleのアカウントがなければ作成する
- APIプロジェクトを作成する
- APIとサービスから、Calendar APIを有効化する
- 認証情報から、認証情報を作成
- サービスアカウントキーを選び、サービスアカウントを作成する
- サービスアカウントのメールアドレスをメモしておく
- JSONファイルをclient_secret.jsonとして保存しておく
準備2: Google Calendar
※ 以下は個人アカウントのGmailの場合。
- 新しいカレンダーを作成する
- カレンダー設定から、カレンダーIDをメモしておく
- 共有設定を変更から、サービスアカウントのメールアドレスを追加し、変更および共有の管理権限を与える
実行
これ: https://github.com/firewood/google-calendar-ruby/blob/master/google-calendar.rb
環境: https://github.com/firewood/google-calendar-ruby
client_secret.jsonを同じディレクトリに置いておく。
$ bundle install
$ ./google-calendar.rb
認証はしているが、サンプルでは公開カレンダー(日本の休日)を取得している。
MY_CALENDAR_IDにカレンダーIDを設定し、insert_eventを呼び出せばイベントの追加ができる。