【PythonでGoogleカレンダー操作】APIとサービスアカウントで予定を自動追加する方法

【はじめに】Google Calendar APIと本記事の目的
Google Calendar APIとは?
Google Calendar APIは、Googleが提供するカレンダー操作のためのRESTful APIです。
このAPIを使うことで、プログラムから以下のような操作が可能になります。
- カレンダーの予定を自動で追加・更新・削除
- 複数人へのイベント招待
- イベントの繰り返し設定や通知
- 複数カレンダーの操作
特に、Pythonのようなスクリプト言語と組み合わせることで、日々の業務や定型タスクを自動化する強力なツールになります。
なぜ今、Google Calendar API × Pythonなのか?
現代のビジネスや開発現場では、
- 社内での会議スケジューリング
- 顧客対応の予約システム
- チーム間でのスケジュール共有
など、「時間管理の自動化」が重要視されています。
そこで注目されているのが、Python + Google Calendar APIの組み合わせです。Pythonは簡潔なコードで操作ができるため、スクリプトによる予定の自動登録に最適です。
本記事の目的
本記事では、Google Calendar APIをPythonから操作し、予定を自動追加する方法をわかりやすく解説します。
特に、一般的に紹介される「OAuth 2.0」を使った認証ではなく、サービスアカウントを利用する方法に焦点を当てます。
OAuthとサービスアカウントの違い
Google Calendar APIを使用するにあたって最初に決めるべき重要なポイントが「認証方法の選択」です。Googleが提供する代表的な認証方法には次の2つがあります。
- OAuth 2.0
- サービスアカウント
ここでは、それぞれの特徴と使い分け方を比較しながら解説します。
OAuth 2.0 認証とは?
OAuthは、ユーザーのGoogleアカウントへのアクセス権限を取得するための仕組みです。
ユーザー本人が「このアプリにカレンダーの操作を許可します」といった認可操作を行う必要があります。
特徴:
- ユーザーごとの認可が必要(同意画面が表示される)
- ユーザーの「マイカレンダー」を操作可能
- 一般公開されているアプリ・サービスでよく使われる
- 認可トークンの管理が必要(有効期限・リフレッシュトークン)
向いている場面:
- 複数のユーザーが自身のGoogleカレンダーを連携するWebサービス
→ 例:予約管理アプリ、ToDo連携アプリ
サービスアカウントとは?
サービスアカウントは、サーバー同士の通信やバックエンド処理で利用する専用のアカウントです。ユーザーの同意なしに、自動的にGoogleのリソースにアクセスできます。
特徴:
- ユーザーの認可操作が不要
- 同一の「システムユーザー(仮想ユーザー)」として動作
- 個人のカレンダーにアクセスするには明示的な共有設定が必要
- 認証情報はJSONファイルで管理(秘密鍵)
向いている場面:
- 社内ツールや定期スクリプトの自動処理
- サーバーから特定の共有カレンダーを操作する
→ 例:シフト表の自動作成、定期ミーティング登録、社内イベントの配信
比較表:OAuth vs サービスアカウント
| 項目 | OAuth 2.0 | サービスアカウント |
|---|---|---|
| 認証方法 | ユーザーの認可が必要 | ユーザー操作なしで認証できる |
| 操作対象のカレンダー | 各ユーザーのカレンダー | 共有されたカレンダーやサービス専用のもの |
| 実行主体 | 実ユーザー | サーバー or システムユーザー |
| 適した用途 | 一般ユーザー向けのWebアプリ | バックエンドや社内の自動スクリプト |
| 認証管理の複雑さ | トークン管理がやや複雑 | JSONファイルの管理のみでシンプル |
本記事で扱うのは「サービスアカウント」
OAuthの方が広く知られているため、多くのチュートリアルではOAuthを前提とした手順が紹介されています。
しかし、「人の手を介さずに自動で予定を登録したい」といった目的の場合は、OAuthよりもサービスアカウントを使った方法の方が効率的で適しています。
このあとは、Google Cloud Consoleを使ってサービスアカウントを作成する手順をご紹介し、Pythonで予定を自動的に登録する方法を具体的に解説していきます。
Google Cloud Consoleでサービスアカウントを作成する方法
Google Calendar API を Python から操作するには、まず Google Cloud Console 上でサービスアカウントを作成し、必要な設定を行う必要があります。この章では、その手順をステップバイステップで解説します。
- Google Cloud Consoleにアクセスする。
- 画面上部の「プロジェクトを選択」→「新しいプロジェクト」をクリック
- 任意のプロジェクト名を入力し、「作成」をクリック
- 作成したプロジェクトを選択した状態で、左上のメニューから「APIとサービス」→「ライブラリ」へ
- 「Google Calendar API」と検索し、クリック
- 「有効にする」ボタンをクリック

- 左メニューから「IAMと管理」→「サービスアカウント」へ
- 「サービスアカウントを作成」をクリック
- サービスアカウント名に任意のサービスアカウント名を入力し、「作成して続行」をクリック
- 権限等は省略し、「完了」をクリック
- 作成したサービスアカウントの「操作(︙)」→「鍵を管理」→「キーを追加」→「新しい鍵を作成」へ
- キーのタイプは「JSON」を選択し、「作成」をクリック
- JSONファイルが自動的にダウンロードされる。
秘密鍵を含むファイルをダウンロードします。この鍵を紛失すると復元できなくなるため、ファイルは大切に保管してください。
サービスアカウントには個人のGoogleカレンダーへのアクセス権限がないため、明示的にカレンダーに共有する必要があります。
- Googleカレンダーにアクセスする。
- 左側の「マイカレンダー」から対象カレンダーにマウスオーバーし、︙メニューから「設定と共有」へ
- 「共有する相手」セクションの「+ ユーザやグループを追加」をクリック
- サービスアカウントのメールアドレスを入力、権限を「変更および共有の管理権限」に設定し、「送信」をクリック

サービスアカウントのメールアドレスはGoogle Cloud Consoleの左メニューから「IAMと管理」→「サービスアカウント」へ移動し、確認できる。

ページ中盤にあるカレンダーIDを確認し、プログラム実行時に使用するので記録しておきます。

PythonでGoogleカレンダーに予定を自動追加するコード
前章までで、Google Calendar API を利用するための準備が整いました。
ここでは Python を使って、サービスアカウント経由で予定を自動的に追加するコードを紹介します。
必要なPythonライブラリのインストール
まずは Google API クライアント関連のライブラリをインストールします。
pip install google-api-python-client google-authサンプルコード
ここでは「予定を1件追加」最小限のサンプルを紹介します。
from google.oauth2 import service_account
from googleapiclient.discovery import build
key_filepath = 'YOUR_KEY_FILEPATH' # 秘密鍵(JSON)のパスに置き換える
scopes = ['https://www.googleapis.com/auth/calendar']
calendar_id = 'YOUR_CALENDAR_ID' # 対象のカレンダーIDに置き換える
credentials = service_account.Credentials.from_service_account_file(
key_filepath,
scopes=scopes,
)
service = build('calendar', 'v3', credentials=credentials)
event = {
'summary': 'サービスアカウントからの予定',
'location': 'オンライン',
'description': 'これはサービスアカウントから追加された予定です。',
'start': {
'dateTime': '2025-07-23T10:00:00+09:00',
'timeZone': 'Asia/Tokyo',
},
'end': {
'dateTime': '2025-07-23T11:00:00+09:00',
'timeZone': 'Asia/Tokyo',
},
}
event_result = service.events().insert(calendarId=calendar_id, body=event).execute()上記のサンプルコードを実行するとGoogleカレンダーに予定が追加されます。

各ポイントの補足解説
| 項目 | 説明 |
|---|---|
| key_filepath | 前章のSTEP 4でダウンロードしたJSONファイルのパスを指定 (例:C:\Users\test\Desktop\calendar.json) |
| calendar_id | 前章のSTEP 6で確認したカレンダーIDを指定 |
| event | 登録するイベント内容を辞書形式で指定。開始/終了時間、出席者、通知なども設定可 |
| insert() | Google Calendar API でイベントを追加するメソッド |
実用化アイデア:Pythonで構築できるGoogleカレンダー連携システム
スタッフのシフト自動登録システム
社内のシフト管理表(Excel、Googleスプレッドシートなど)をもとに、従業員のカレンダーに自動でシフトを登録するシステムを構築することができます。
- 各従業員の予定が自動でカレンダーに反映される
- 共有カレンダーに登録すれば管理者も一括把握可能
- 繰り返し処理や通知も組み込み可能
予約フォーム連動のスケジューリングシステム
問い合わせフォームや予約フォームと連動し、顧客からの入力内容をもとにカレンダーに自動登録する仕組みです。
- フォーム送信と同時にイベントが作成され、担当者に通知
- 顧客情報を出席者として登録することで、招待メールも送信
システムの構築を依頼したい方へ
ここまで、PythonとGoogle Calendar APIを使って、予定を自動的に追加する方法をご紹介してきました。
一見シンプルな処理に見えても、APIの認証、共有設定、実装ロジックの設計にはある程度の技術的な知識と経験が必要です。
「アイデアはあるけど、実装までは難しい…」
私が運営するスクレイピング代行サービスSCRAPROではあなたの業務に最適な自動化通知システムの設計・開発を承っております。
是非お気軽にご相談ください。


コメント