色々調べてやってみたけど404って突き返されたりして困ったから書いとく。
1. 下準備
1.1. API諸々を作成
Google Server Platformで作業を進める。
1.1.1. APIを有効化
- 真ん中上の検索窓で”Calendar API”を検索
- “Google Calendar API”を選択
- 「有効化」
1.1.2. サービスアカウント作成
- 検索窓で”**サービス アカウント”**を検索
- 「サービスアカウントを作成」から適当に作る
1.1.3. 秘密鍵を取得
- 1.2.で作成したアカウントを選択
- 「キー」を選択し「鍵を追加」→ 「新しい鍵を作成」
- JSONを選択し作成
- 秘密鍵がダウンロードされるため任意のフォルダに配置
1.1.4. サービスアカウントのメアドをコピー
「詳細」タブにあるメールアドレスをコピーしておく。(次で使う)
1.2. Google Calendarでアカウントを追加
- Google Calendarの設定へ行く。
- マイカレンダーの設定から予定を追加したいカレンダーを選択
- “特定のユーザーまたはグループと共有する”の「ユーザーやグループを追加」を選択
- さっきコピーしたメアドをペーストして権限を”変更および共有の管理権限”にする
そのまま下に行って”カレンダー ID”のメアドをコピー(後で使う)
2. APIを叩く
Pythonでやってく
2.1. ライブラリを入れる
pip3 install google-api-python-client google-auth
2.2. 書く
こんなかんじ
import datetime
from google.oauth2 import service_account
from googleapiclient.errors import HttpError
from googleapiclient.discovery import build
creds = service_account.Credentials.from_service_account_file('ここで鍵のパスを指定')
service = build('calendar', 'v3', credentials=creds)
calendar_id = 'ここにさっきのID(メアド)を入れる'
def create_event(summary, start_time, end_time):
event = {
'summary': summary,
'start': {
'dateTime': start_time.strftime('%Y-%m-%dT%H:%M:%S'),
'timeZone': 'Asia/Tokyo',
},
'end': {
'dateTime': end_time.strftime('%Y-%m-%dT%H:%M:%S'),
'timeZone': 'Asia/Tokyo',
},
}
try:
event = service.events().insert(calendarId=calendar_id, body=event).execute()
print(f'Event created: {event.get("htmlLink")}')
except HttpError as error:
print(f'An error occurred: {error}')
event = None
return event
start_time = datetime.datetime(2023, 4, 9, 9, 0, 0)
end_time = datetime.datetime(2023, 4, 9, 10, 0, 0)
create_event('Meeting with John', start_time, end_time)