RubyでGoogle Calendarのイベントを取得する手順


Google APIを使ってみたい！ということで、Rubyで
Google Calendarのイベントを取得するところまで
やってみたいと思います。

## 事前にやっておくこと
* Rubyをインストールしましょう

私は `Ruby 2.3.1` を使っています

* Googleのアカウントを登録しましょう
* Google Calendarに何かしら予定を登録しましょう

## Google APIsとは

Google Calendarのイベントを取得するには、 `Google APIs` というサービスを使います。
Googleが公式に提供しているサービスで、
Googleマップ や YouTube などの `Google API` を使用することができます。

![スクリーンショット 2016-10-18 20.09.18.png](https://qiita-image-store.s3.amazonaws.com/0/85603/f780aa6a-9328-0683-3b85-d21a0da4ec0b.png "スクリーンショット 2016-10-18 20.09.18.png")

色々な機能がありますが、今回はGoogle CalendarのAPIを使ってイベントを取得しましょう。

## Google APIの設定をする

### 1. プロジェクトを作成しましょう。
![スクリーンショット 2016-10-18 20.16.51.png](https://qiita-image-store.s3.amazonaws.com/0/85603/6a893b2d-ac7e-31b2-196e-31d453809151.png "スクリーンショット 2016-10-18 20.16.51.png")

ここでは `cherryrb` としました。

リファレンスのURLをたたいたほうがやりやすいです。
この `this wizard` に飛んで、登録していきましょう。

![スクリーンショット 2016-10-18 20.43.11.png](https://qiita-image-store.s3.amazonaws.com/0/85603/0eecc8f6-9385-1f9e-1170-2c2590803f1d.png "スクリーンショット 2016-10-18 20.43.11.png")

### 2. `Google Calendar API` を有効にしましょう。

有効にするとこのような表示になりました。
![スクリーンショット 2016-10-18 20.17.36.png](https://qiita-image-store.s3.amazonaws.com/0/85603/65ab714b-e8f9-ddd6-d89c-49fb1c4eaa59.png "スクリーンショット 2016-10-18 20.17.36.png")

### 3. 認証情報に進みましょう。
設定は以下のようにします。
![スクリーンショット 2016-10-18 20.19.19.png](https://qiita-image-store.s3.amazonaws.com/0/85603/d1f6c7c5-bd64-ccf0-971f-0921b0a7832b.png "スクリーンショット 2016-10-18 20.19.19.png")

その後、認証情報やOAuthの設定もあるので、どんどん進みます。
※認証情報のダウンロードは後からでもできます。

これで、認証情報が登録できました。

### 4. APIキーの設定
APIキーの設定も必要です。

![スクリーンショット 2016-10-18 20.40.55.png](https://qiita-image-store.s3.amazonaws.com/0/85603/6e49a45c-fef2-4314-72ba-cb4ef1bdacff.png "スクリーンショット 2016-10-18 20.40.55.png")


## 動かそう

今回はサンプルを使います。

Google Calendarの `ダッシュボード` の、
「このAPIについて」 というところに `ドキュメント` とあるので、そこを参考にします。
Rubyのサンプルが用意されています。

![スクリーンショット 2016-10-18 20.12.23.png](https://qiita-image-store.s3.amazonaws.com/0/85603/97fc1b46-510f-3703-5bdc-20e5ca8ad771.png "スクリーンショット 2016-10-18 20.12.23.png")

基本的に[このドキュメント](https://developers.google.com/google-apps/calendar/quickstart/ruby)の通りに実行すれば簡単にできますが、
ちょっと手順を変えました。

### 1. Gemfileを用意

```
# A sample Gemfile
source "https://rubygems.org"

gem 'google-api-client'

```

```
$ bundle
```

これで `google-api-client` のgemが入りました。

### 2. イベントを取得するコードを書く

書くというより、今回はドキュメントのコードをそのまま使っています。

[ドキュメント](https://developers.google.com/google-apps/calendar/quickstart/ruby) の `Step 3: Set up the sample` を使いましょう。

### 3. 「認証情報」のJSONをダウンロードします。

ここからダウンロードができます。

![スクリーンショット 2016-10-18 20.29.59.png](https://qiita-image-store.s3.amazonaws.com/0/85603/4c6c024c-e65a-02c3-c44c-57ef74a1a67a.png "スクリーンショット 2016-10-18 20.29.59.png")

ダウンロードしたファイルは、 `client_secret.json` にリネームして
ファイルの直下に置きます。

今の時点ではこのようなファイル構成です。

```
google_apis/
  - event.rb
  - client_secret.json
  - Gemfile
  - Gemfile.lock
```

### 4. rubyを実行

consoleからrubyを実行します。

```
ruby event.rb
```

そうすると、consoleにURLが表示されます。
そのURLをコピーして、ブラウザに貼り付けてください。
認証のキーがとれます。

そのキーを、 

```
code = gets
```

の `gets` のところに設定しましょう。

### 5. できた！

rubyを実行してみましょう。
イベントが取得できます。

```
Upcoming events:
- Cherry.rb #33 (2016-10-19T19:00:00+09:00)
- DDD.rb #8 (LED.mrb) (2016-10-20T19:00:00+09:00)
```

## ymlの設定

認証キーをそのままベタ書きはあんまりなので、
ymlで読み込むように設定しました。
.gitignoreで設定すれば、gitにあげても他の人からは見られません。

* event.rb

```
require 'yaml'
data = YAML.load_file('setting.yml')
```

* setting.yml

```
user:
 - code: xxxx
```

としました。これで、 `data` の中にcodeが読めるようになります。


最終的なファイル構成は、以下のようになりました。

```
google_apis/
  - .gitignore
  - event.rb
  - client_secret.json
  - Gemfile
  - Gemfile.lock
  - setting.yml
```



## 最後に

今回はドキュメント通りにやってみる、という目的で実行してみました。
ここから色々カスタマイズしたり、他のアプリケーションと連携していきたいなと思っています。