ヤマムギ

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 名古屋 あけましておめでとう! セキュ …

Googleナレッジパネルの認証を受けるために申請してみた

Googleでエゴサーチしていると、ナレッジパネルなるものがあることに気づきまし …

Python SQLAlchemy MySQLでcase文を使う

PythohのORMライブラリSQLAlchemyでMySQLのテーブルSele …

CentOS 6にPython実行環境を構築

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

GoogleAppsScriptを使ってGmailの本文を解析してSpreadSheetにエクスポートする

GoogleAppsScriptを使ってGmailの本文を解析してSpreadS …

docomo Developer supportの 雑談対話APIから自然対話APIへ移行しました

LINEやSlackのbotで重宝していた、雑談対話APIが終了する、とのことで …

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

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

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

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

Pepper 開発 ワークショップ初級~中級~番外編に1日で一気に参加した

Pepperの開発方法が知りたかったので、Pepperアトリエ秋葉原 with …

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

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