Pythonでグーグルカレンダーを取得してSQLServerに突っ込むメモ

# はじめに
なんかこう１年のまとめって年末にするのめんどくさいなぁ～って思ってグーグルカレンダーからしょっぴけばよくね？って思ったわけ。で、意外に簡単そうだなってのが第一印象だったんだけど、てっきり「俺のカレンダー」みたいな感じでパッと持ってこれると思ってたら「credentials」とかいう認証情報をダウンロードしてプログラムファイルと同じディレクトリに置いたりしないといけないらしい...。もしかしてAPIからのダウンロード、配置をユーザーにやらせるの？？なんか大企業にはびこる 
クソメーラー
 Notesを彷彿とさせますね...。あっ、違うのかな、API使用責任者が僕（の認証情報）ってこと？さて、マイブームとしての英語能力強化期間なので、英語のAPIページを生で読んでいくぜ！

# 参考ページ
https://developers.google.com/calendar/quickstart/python

# Step 1: Turn on the Google Calendar API
グーグルカレンダーのAPIを有効にしろ！
![image.png](https://qiita-image-store.s3.amazonaws.com/0/94562/e85f4187-dd26-8d36-0c8f-829d1f0b0ed8.png)

「DOWNLOAD CLIENT CONFIGURATION」を押してダウンロードされたらプログラムがあるディレクトリに置け
![image.png](https://qiita-image-store.s3.amazonaws.com/0/94562/fd11bd6f-07ff-3e45-0ad8-168876442caf.png)

## 補足
[Google APIの認証の種類](https://qiita.com/masaha03/items/fab8c8411a020ff2bd42)
> APIキーは、ユーザーデータにアクセスする必要がない場合
OAuth 2.0は、不特定多数のユーザーのデータにアクセスする必要がある場合
サービスアカウントは自身のアカウントや会社の顧客などにアクセスする場合

あー、サービスアカウントだったんだな。

# Step 2: Install the Google Client Library
グーグルクライアントが使うライブラリをインストールしろ！

```py:ライブラリのインストール
C:\Users\yoshi> pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
```

# Step 3: Set up the sample
https://github.com/duri0214/Python/tree/master/basic_read_googlecalendar

```py:PyUtils.py（ライブラリに日時変換が増えました！）
import datetime

# 2019-02-06T06:00:00+09:00 > 2019/02/06 06:00:00
def ConvertIso2YMDHMS(v):
    return(datetime.datetime.fromisoformat(v).strftime("%Y/%m/%d %H:%M:%S"))
```


# Step 4: Run the sample
```text:実行
> python main.py
```
・自動的に認証画面が出てくる
あっそういうことね。勝手に出てきた。:astonished:
![image.png](https://qiita-image-store.s3.amazonaws.com/0/94562/95fd9ad7-513f-fbef-a041-413378465ba0.png)

・このウィンドウは閉じていいぞ
![image.png](https://qiita-image-store.s3.amazonaws.com/0/94562/f5741311-2bf1-40a0-d3f3-bda47d38c50a.png)

・ファイルが生成された
![image.png](https://qiita-image-store.s3.amazonaws.com/0/94562/54ad50de-a53b-21c1-6bfe-6784024a583c.png)

・もういっちょ実行
おー、でてきたやんけ。給料日近いやん！:relaxed:

```text:GoogleのサンプルのままやるとへんなT（タイムゾーン情報）がくっついてくる
> python main.py
  Getting the upcoming 10 events
  2019-02-05T21:00:00+09:00 7印刷）さくらのVPS請求書
  2019-02-06T06:00:00+09:00 燃えないゴミ
  2019-02-06T19:00:00+09:00 フロントエンドもくもく会 #22
  2019-02-07T17:00:00+09:00 スピードラーニング・本気コースイングリッシュチェック
  2019-02-10 給料日
  2019-02-10T10:00:00+09:00 NISA引き落とし 33,000
  2019-02-10T21:00:00+09:00 【57,073 支払】クレジットカード
  2019-02-11T21:00:00+09:00 board請求書
  2019-02-14T21:00:00+09:00 Meetup領収書発行される
  2019-02-17T21:00:00+09:00 freee請求書発行される
```

今回一番手こずったのが日時のフォーマット（SQLServerにInsertできない）
**「2019-02-06T06:00:00+09:00」**から**「2019/02/06 06:00:00」**に変える必要があった

```text:日時変換を適用したあとはSQLServerにInsertできた！
> python main.py
  2019-02-05 20:00,python公式doc 「isoformat 語尾z いらない」にヒントありそう。yyyy-MM-ddTHH:mm:ssZ。zへらして、セパレート に空白指定すれば終わる？？https://docs.python.jp/3/library/datetime.html
  2019-02-06 06:00,燃えないゴミ
  2019-02-06 06:30,粉コーヒー買って
  2019-02-06 19:00,フロントエンドもくもく会 #22
  2019-02-07 17:00,スピードラーニング・本気コースイングリッシュチェック
  2019-02-10 00:00,給料日
  2019-02-10 10:00,NISA引き落とし 33,000
  2019-02-10 21:00,【57,073 支払】クレジットカード
  2019-02-11 21:00,board請求書
  2019-02-14 21:00,Meetup領収書発行される
```

## トラブルシューティング
APIからダウンロードした「credentials.json」と自動生成される「token.pickle」をそれぞれ「credentials」「token」フォルダにしまって整理しようとしたらうまく実行できなくなったから、なにがなんでも main.py のとこに置かないといけないみたい。