2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google Calendar APIを叩いて予定を追加する

Last updated at Posted at 2023-04-08

色々調べてやってみたけど404って突き返されたりして困ったから書いとく。

1. 下準備

1.1. API諸々を作成

Google Server Platformで作業を進める。

1.1.1. APIを有効化

  1. 真ん中上の検索窓で”Calendar API”を検索
  2. Google Calendar API”を選択
  3. 「有効化」

1.1.2. サービスアカウント作成

  1. 検索窓で”**サービス アカウント”**を検索
  2. 「サービスアカウントを作成」から適当に作る

1.1.3. 秘密鍵を取得

  1. 1.2.で作成したアカウントを選択
  2. 「キー」を選択し「鍵を追加」→ 「新しい鍵を作成」
  3. JSONを選択し作成
  4. 秘密鍵がダウンロードされるため任意のフォルダに配置

1.1.4. サービスアカウントのメアドをコピー

「詳細」タブにあるメールアドレスをコピーしておく。(次で使う)

1.2. Google Calendarでアカウントを追加

  1. Google Calendarの設定へ行く。
  2. マイカレンダーの設定から予定を追加したいカレンダーを選択
  3. “特定のユーザーまたはグループと共有する”の「ユーザーやグループを追加」を選択
  4. さっきコピーしたメアドをペーストして権限を”変更および共有の管理権限”にする

そのまま下に行って”カレンダー 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)

できた!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?