GoogleCalendarAPIを使ってGoogleCalendarの予定を取得する
お題通りです。+ α程度の情報は載せていますが、基本的には公式のQuickStart通りに進めました。言語はPythonです。
Step1: Google Calendar APIを有効にする
自分のGoogleアカウントでGoogle Developers Consoleにログインします。初めての場合は「規約に同意して進む」みたいな画面が出るので、一通り確認して進みます。
認証が終わると自動的にAPIを使うためのProjectが作成されます。 「認証情報の追加」というメニューが出てきますが、APIを使うのに必要なのはClient IDなので「クライアントID」と書かれたリンクをクリックして次に進みます。
OAuth同意画面に飛ばされるので、必須項目のサービス名を記入して次へ。(他に記入できる項目があれば記入してください) アプリケーションの種類と名前(適当でもいいです)を入力して「作成」ボタンを押すとクライアントIDとシークレットキーが作成されます。
こんな感じです。右端のダウンロードのマークをクリックしてjsonファイルをダウンロードし、client_secret.jsonという名前にリネームしてプログラムを置く予定のフォルダに保存します。
Step2: Pythonライブラリのインストール
pipで入れるだけ。
pip install --upgrade google-api-python-client
Step3: サンプルスクリプトを動かす
サンプルのスクリプトquickstart.py
が公開されているので、これをコピーします。
Step4: 実行
あとはpythonで叩くだけ。
python quickstart.py
ブラウザが立ち上がって、Googleアカウントの認証をできればOK。 サンプルのスクリプトは、実行したタイミングから未来の予定10件を取得するようにできています。
補足
これだけだとちょっと寂しすぎるので、少しだけ補足を。
認証情報の保管
quickstart.py
実行時にブラウザを使って認証を行いましたが、これは最初だけです。2回目以降は普通にAPIが使えます。
この時の認証情報が$HOME/.credentials/
以下に保存されています。
APIの仕様
こちらのサイトに使えるメソッドが載っています。
予定の書き込み
quickstart.py
では、予定の読み込みの例しか載っていません。
書き込みの例を簡単に紹介します。やることは主に3つ程度です。
1. SCOPEの変更
quickstart.py
の20行目
SCOPES = 'https://www.googleapis.com/auth/calendar.readonly'
この最後のreadonlyを省きます。
2. 認証情報を削除
このままだと上記のreadonly権限での認証情報が残ってしまっているため、Permission Deniedで弾かれます。 $HOME/.credentials以下の認証情報ファイルを削除します。
3. イベントを挿入するソースコードを記述
quickstart.py
でイベントを取得している箇所を、以下のような感じに書き換えます。
event = { 'summary': 'Sample Event from Python', 'start': { 'dateTime': '2017-04-28T09:00:00', 'timeZone': 'Asia/Tokyo', }, 'end': { 'dateTime': '2017-04-29T19:00:00', 'timeZone': 'Asia/Tokyo', }, 'recurrence': [ 'RRULE:FREQ=DAILY;COUNT=2' ], } calendarId = 'xxxxxxx@gmail.com' # 自分のカレンダーID(例えば、メールアドレス名)を入れる event = service.events().insert(calendarId=calendarId, body=event).execute()