ヤマムギ

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認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

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

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

 - Google, Python ,

ad

ad

  関連記事

TikTok向けのお知らせ動画をGoogleスライドで作ってみました

2022/1/28(金)のJAWS-UG 名古屋 あけましておめでとう! セキュ …

CentOS 6にPython実行環境を構築

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

CentOS 6でPythonからOracleに接続する

OracleのデータをPythonでさわりたくて、その実行環境がCentOS6の …

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

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

「streamlit勉強会」に参加しました

streamlitってなんだろう? と思いながら参加しまししました。 fin-p …

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

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

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

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

youtube-container クラスのheightを調整

当ブログにGoogleカレンダーとかGoogleフォームを埋め込むと、heigh …

「Cloud Vision Api & Tensorflow勉強会」に行ってきました

「Cloud Vision Api & Tensorflow勉強会」に行 …

Google One 100GBプランを購入しました

2021/6/1からGoogle Photos、Gmail、Google Dri …