環境
- Windows 10
- Python 3.9.4
- VSCode
GCPのプロジェクトをセットアップする
GoogleのクラウドサービスであるGoogle Cloud Platform(以下GCP)で各種準備します
GCPプロジェクトを作成する
下記より新しいプロジェクトからプロジェクトを新規作成する
https://console.cloud.google.com/home/dashboard?project=my-daily-task-349202&hl=ja
Google Calendar APIを有効にする
ナビゲーションメニューから、[APIとサービス]→[ライブラリ]を選択する。
検索窓から「Google Calendar API」を検索し、[有効化]をクリックする。
![](https://images.microcms-assets.io/assets/c8f47cd9ef654a2d9ca6b6e579be433f/c2e2828da0024abd99925b0837e5de61/image.png)
サービスアカウントを作成する
ナビゲーションメニューから、[IAMと管理]→[サービスアカウント]を選択する。
画面上の[+ サービスアカウントを作成]をクリックする
![](https://images.microcms-assets.io/assets/c8f47cd9ef654a2d9ca6b6e579be433f/b92183d73a0b4697896db4793c0269fd/image.png)
説明に沿ってサービスアカウント名などを入力する。(省略可の項目は省略してもOK)
サービスアカウントの鍵を作成・配置する
サービスアカウントの画面で、該当のサービスアカウントのキータブを選択する。
「JSON」を選択して、鍵を作成する。
![](https://images.microcms-assets.io/assets/c8f47cd9ef654a2d9ca6b6e579be433f/768bc11f9aff4e8aadf70cba4fec5efb/image.png)
作成した鍵を後に作成するPythonプログラムからアクセスできる場所に配置しておいたください
Googleカレンダーの共有設定を編集する
Googleカレンダーを開き、使用するスケジュールの[設定と共有]を選択する。
![](https://images.microcms-assets.io/assets/c8f47cd9ef654a2d9ca6b6e579be433f/fcb35b952b954d27b65b9500a183711b/image.png)
「特定のユーザーとの共有」のところで、[+ ユーザーを追加]をクリックする。
![](https://images.microcms-assets.io/assets/c8f47cd9ef654a2d9ca6b6e579be433f/48af62b89049402da83b96287ba96db3/image.png)
サービスアカウントのメールアドレスを入力し、[権限]には「変更および共有の管理権限」を選択する。
サービスアカウントのメールアドレス↓
![](https://images.microcms-assets.io/assets/c8f47cd9ef654a2d9ca6b6e579be433f/f0fb7c4288af47f588e75a3624bc86f4/image.png)
プログラムの作成
pip等で必要なライブラリをインストール
pipenv install google-api-python-client google-auth
予定の取得
- ざっと最低限のソースコードは以下の通りです。
- やっていることは大きく下記
- 用意したjsonファイルを読み込んでgoogle apiの認証
- googleapiclientのインスタンスを作る(service)
- serviceのeventsメソッドでカレンダーに登録されているイベントを取得(eventsメソッドについては以下の公式Docの箇所を参照)
https://developers.google.com/calendar/api/v3/reference/events/list
import googleapiclient.discovery
import google.auth
from shared.Domain.FileSystem.x_file_system_path import XFileSystemPath
from shared.Domain.String.xstr import XStr
import datetime
auth_url = ["https://www.googleapis.com/auth/calendar"]
gapi_creds = google.auth.load_credentials_from_file(
"your/json/path.json",
auth_url,
)[0]
service = googleapiclient.discovery.build("calendar", "v3", credentials=gapi_creds)
utc_now_str = datetime.datetime.utcnow().isoformat()
time_min = utc_now_str + "Z"
time_max = datetime.datetime.fromisoformat(utc_now_str) + datetime.timedelta(seconds=1)
calendar_id = "your calendar id"
events = (
service.events()
.list(
calendarId=calendar_id,
timeMin=time_min,
timeMax=f"{time_max.isoformat()}Z",
singleEvents=True,
orderBy="startTime",
)
.execute()
)
print(events) // dict
戻り値は以下のように辞書型です。また、itemsというキー名の配列にイベントが入っていますので、events["items"]とすることで、カレンダーに登録されているイベントの配列を取得することが可能です。
※一部割愛、省略しています。
{
'kind': 'calendar#events', ・・・・
'items': [
{'kind': 'calendar#event', 'id': '', 'htmlLink': '', 'created': '2022-05-04T12:12:32.000Z',
'updated': '2022-05-04T12:12:32.963Z', 'summary': 'PCを整理する',
'start': {'date': '2022-05-04'}, 'end': {'date': '2022-05-05'} ・・・・
]
}まとめ
まとめ
いかがでしたでしょうか。本記事では、PythonでGoogleカレンダーAPIを使用する方法について紹介しています。Googleカレンダーの自動化などを行う際には有効活用できますので、ぜひ参考にしてみてください。