【Google Calendar API #3】イベントを追加してみる

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のメインカレンダーの翌日に予定が追加されていると思います。
これで追加できました。

参考

コメント

タイトルとURLをコピーしました