LoginSignup
3
2

More than 5 years have passed since last update.

RubyでGoogle Calendarをサービスアカウントから操作する

Last updated at Posted at 2017-09-10

背景

サーバサイドでGoogle Calendarを使うとき、ユースケースとしては例えば

  1. ユーザのデータをカレンダーに登録する
  2. サーバ自体の情報をカレンダーに登録する

が考えられる。多くのサンプルは前者のようだが、バッチから公開用のカレンダーを更新するために後者を調べた。
"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を呼び出せばイベントの追加ができる。

参考

3
2
0

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