ヤマムギ

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にしないと繰り返しなど取得したくないイベントまで取得されてしまいました。

@yamamanx
開発ベンダー5年、ユーザ企業システム部門通算9年、ITトレーナー1年目のSoftware Engineerです。 質問はコメントかSNSなどからお気軽にどうぞ。 出来る限りなるべく答えます。 このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。

 - Google, Python ,

ad

ad

Message

メールアドレスが公開されることはありません。

  関連記事

SQLAlchemyでjoinする

PythonのSQLAlchemyでMySQLのテーブルをjoinするときの覚書 …

SQLAlchemy Session.executeでinsertしてAUTO INCREMENTでセットされたプライマリキーを取得したい

PythohのORMライブラリSQLAlchemyでMySQLにインサートしたレ …

SendGrid(sendgrid_python)でメール送信してイベントの情報からメール本文をたどれるようにしておく

動的に生成するメールで実際にどんな本文が送信されたかを記録しておきたいときもある …

Feedlyのフィードを自動でSlackへ投稿する(AWS Lambda , Amazon DynamoDB)

やりたいこと Feedlyで共有したいフィードに特定のタグを付けます。 特定のタ …

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

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

pythonのsqlalchemyで嵌った話

エラーメッセージ InvalidRequestError: SQL expres …

SendGrid(Python)で添付ファイル付きのメールを送信する

SendGridを使って添付ファイル付きのメールを送信するサンプルをPython …

RedmineにGoogleAppsアカウントでログイン出来るようにする

RedmineのログインをGoogleアカウントで出来るように[redmine_ …

Python openpyxlで結合セルを含むExcelファイルを開くと罫線が消える

PythonのExcelを読み書きするためのライブラリ、openpyxlで結合セ …

CentOS 6にPython実行環境を構築

CentOS6(32bit)にPython2.7実行環境を構築した際のメモです。 …