Google Calendar API 講座第3回です。
今回は、メインのカレンダーにイベントを追加します。
前回
イベントを追加する
from __future__ import print_function
from datetime import datetime, timedelta
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
SCOPES = ['https://www.googleapis.com/auth/calendar']
def main():
# 認証
creds = None
if os.path.exists('token.json'):
creds = Credentials.from_authorized_user_file('token.json', SCOPES)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
with open('token.json', 'w') as token:
token.write(creds.to_json())
# イベントの日付を設定
now_dt = datetime.utcnow() + timedelta(hours=9, days=1)
now_d = now_dt.strftime("%Y-%m-%d")
# イベントの詳細を作成
event = {
'summary' : 'A new python event',
'description' : 'Test event',
'start':{
'date' : now_d,
'timeZone' : 'Japan'
},
'end':{
'date' : now_d,
'timeZone' : 'Japan'
}
}
# 認証し、オブジェクトを作成
service = build('calendar', 'v3', credentials= creds)
# イベントを追加
res = service.events().insert(calendarId='primary', body=event).execute()
# イベントの追加した結果を出力
print(res)
if __name__ == '__main__':
main()
認証を含めた処理はこのようになります。
第一回で紹介したJSONファイルをcredential.json
として、この.pyファイルと同じ階層になければいけません。
認証
認証は、前回に取得したJSONファイルを参照して行われます。
ログイン等は、前回の記事を参照してください。
ログインに成功すると、token.json
を生成します。
二度目からはtokenを使用して認証を行います
イベントの日付を設定
イベントの日付は、時間を指定しない(終日)場合はYYYY-mm-dd
の形で設定します。
時間を設定する場合は、開始時間と終了時間をdatetime.isoformat()
の形で設定します。
イベントの詳細の作成
イベントは、リテラル(辞書型)で作成します。
名前を見れば結構シンプルなので説明不要かもしれませんが、一応説明しておきます。
summary | 追加する予定のタイトル |
description | 追加するイベントの内容 |
start | 開始時刻情報 |
start.date | 開始日 |
start.timeZone | タイムゾーン |
end | 終了時刻情報 |
end.date | 終了日 |
end.timeZone | タイムゾーン |
イベントを追加
build.service.events().insert().execute()
でイベントを追加することができます。
insertや、eventに使えるパラメータは、公式のリファレンスに記載されています。
追加した戻り値

イベントを追加した戻り地は、追加したイベントやカレンダーの情報のリテラルが帰ってきます。
この追加後のイベント情報と、自分の追加したかった情報が正しいのかを確認できます。
(誤ることはほとんどないですが、パラメータを間違えているかや、通信中のトラブルの特定に使えます。)
追加した結果

上のコードを実行すると、Google Calendarのメインカレンダーの翌日に予定が追加されていると思います。
これで追加できました。
コメント