環境
- 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」を検索し、[有効化]をクリックする。
サービスアカウントを作成する
ナビゲーションメニューから、[IAMと管理]→[サービスアカウント]を選択する。
画面上の[+ サービスアカウントを作成]をクリックする
説明に沿ってサービスアカウント名などを入力する。(省略可の項目は省略してもOK)
サービスアカウントの鍵を作成・配置する
サービスアカウントの画面で、該当のサービスアカウントのキータブを選択する。
「JSON」を選択して、鍵を作成する。
作成した鍵を後に作成するPythonプログラムからアクセスできる場所に配置しておいたください
Googleカレンダーの共有設定を編集する
Googleカレンダーを開き、使用するスケジュールの[設定と共有]を選択する。
「特定のユーザーとの共有」のところで、[+ ユーザーを追加]をクリックする。
サービスアカウントのメールアドレスを入力し、[権限]には「変更および共有の管理権限」を選択する。
サービスアカウントのメールアドレス↓
プログラムの作成
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カレンダーの自動化などを行う際には有効活用できますので、ぜひ参考にしてみてください。