ヤマムギ

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


最後までお読みいただきましてありがとうございました!

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「AWS認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。

 - Google, Python ,

  関連記事

pyenv update で「pyenv: no such command `update’ 」

環境 macOS Sierra 10.12.4 pyenvのアップデート pye …

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

ご注意 ※下記の記事で使用していたAPIは2016年現在使用出来なくなっています …

SQLAlchemyでjoinする

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

chromium OS をインストールするためのUSBをMacで作る

別にChromeBookを購入するお金をけちるわけではないのですが。 chrom …

redmine_omniauth_googleプラグインをRedmine3.0.0で動くようにする

redmine_omniauth_googleプラグインをインストールしたところ …

Pepperで撮影した写真をAmazon Rekognitionで分析してその結果をPepperがしゃべる ~(2)Pepper編~

Pepperで撮影した写真をAmazon Rekognitionで分析してその結 …

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

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

Chrome リモートデスクトップを使ってみる

自宅のMacをリモートで操作したい 外出用PCはWindows 8 とLinux …

pythonのsqlalchemyで嵌った話

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

動画間の広告を飛ばすのが面倒になったのでYoutube Premiumに加入しました

テレビのCMは全然見る方なんですが、Youtubeの動画の間の広告ってなんか流し …