ヤマムギ

growing hard days.

*

個人のGoogleカレンダーの予定をPythonで取得する

   


Google Calendar Twilio ReminderのGoogleカレンダーの予定を取得する部分の説明です。

個人のというかアクセス制限されたカレンダーからの予定取得はサービスアカウントを発行しなければいけなく少し手間取りました。

Google API ConsoleでCalendarAPIのサービスアカウントを発行

Google API Consoleで新しいプロジェクトを作成します。

作成したプロジェクトで[APIを有効にする]をクリックします。

ライブラリの一覧で[Calendar API]を選択します。

[有効にする]をクリックします。

[認証情報]-[認証情報を作成]-[サービスアカウントキー]を選択します。

[新しいサービスアカウント]を選択して[サービスアカウント名]を入力して役割は「オーナー」にしました。
キーのタイプは「JSON」にします。

[作成]をクリックするとJSONファイルがダウンロードされるので「google_key.json」というファイル名でソースコードと同じフォルダに配置します。

自動で生成されるサービスアカウントIDは後で環境変数に設定するので控えておきます。

AWS Lambdaの環境変数

GOOGLE_SERVICE_ACCOUNT_IDという環境変数を設定して、先ほど作成したサービスアカウントIDを設定します。

対象のカレンダーのアクセス権限

一般公開していない個人のカレンダーが前提ですので、特定のユーザーにサービスアカウントIDの閲覧権限を設定します。

予定取得のソースコード

get_credentials

  • ServiceAccountCredentials.from_json_keyfile_nameで認証を戻します。
  • scopesは’https://www.googleapis.com/auth/calendar’です。
  • from_json_keyfile_nameなので保存したjsonファイルを指定します。

get_schedule

  • service.events().list().execute()でevetnsを取得
  • events[‘items’]が予定のリスト

service.events().listの引数

  • calendarId : Googleアカウント(メールアドレス)
  • timeMin : 開始時間
  • timeMax : 終了時間
  • singleEvents : 該当時間内のイベント

※singleEvents=Trueにしないと繰り返しなど取得したくないイベントまで取得されてしまいました。


最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

 - Google, Python ,

ad

ad

  関連記事

「【第2回】データ分析勉強会(尼崎Pythonの会#1)」に行ってきました

「【第2回】データ分析勉強会(尼崎Pythonの会#1)」に行ってきました。 略 …

Google関連のAPIを試すためのGoogleSiteを作ってみました

目次 組み込み機能で出来る事は組み込み機能でで、そこで何をするかというと 組み込 …

Linux Mint 17 MATE 64bit にIPython Notebookをインストールする

今日行く勉強会でIPython Notebookの環境が必要なため、手持ちのLi …

pythonのsqlalchemyで嵌った話

目次 エラーメッセージ原因 エラーメッセージ InvalidRequestErr …

Googleカレンダーの予定をPHPからXMLで取得してWebページに表示する(現在廃止されたAPIなので使えません)

目次 ご注意本文 ご注意 ※下記の記事で使用していたAPIは2016年現在使用出 …

自転車でナビ+記録出来るアプリ+ホルダー+バッテリー試してみた

目的 記録を蓄積して振り返りやる気を継続する 飽きないように単調にならないように …

Google Apps ScriptでAdmin SDK Directory Serviceを使ってユーザの最終ログイン情報一覧を出力する

GoogleAppsで使わなくなったアカウントを確認する方法として、最終ログイン …

SQLAlchemyでシンプルにjoinする

過去のSQLAlchemyでjoinするという記事でPythonのSQLAlch …

Linux Mint 17 MATE 64bit にTensorFlowをインストールする

勉強会でTensorFlowを使用しますので、Linux Mint 17 MAT …

Python SQLAlchemy MySQLでテーブルを指定せずにFunctionを使う

難しく考えて悩んでいましたが、queryに書いてやればいいだけでした。 sess …