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

「毎回のデータ収集に時間がかかる」「AIでコードを作っても動かない」
そんなお悩み、SCRAPROが解決します。
サービスについて詳しく見る

目次

【はじめに】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 上でサービスアカウントを作成し、必要な設定を行う必要があります。この章では、その手順をステップバイステップで解説します。

STEP
Google Cloudプロジェクトを作成
  1. Google Cloud Consoleにアクセスする。
  2. 画面上部の「プロジェクトを選択」→「新しいプロジェクト」をクリック
  3. 任意のプロジェクト名を入力し、「作成」をクリック

プロジェクト名は任意でOKですが、後で見分けがつきやすい名前にすると便利です。
(例:calendar automate)

STEP
Google Calendar API を有効化
  1. 作成したプロジェクトを選択した状態で、左上のメニューから「APIとサービス」→「ライブラリ」へ
  2. 「Google Calendar API」と検索し、クリック
  3. 「有効にする」ボタンをクリック
STEP
サービスアカウントの作成
  1. 左メニューから「IAMと管理」→「サービスアカウント」へ
  2. 「サービスアカウントを作成」をクリック
  3. サービスアカウント名に任意のサービスアカウント名を入力し、「作成して続行」をクリック
  4. 権限等は省略し、「完了」をクリック
STEP
秘密鍵を作成・ダウンロード
  1. 作成したサービスアカウントの「操作(︙)」→「鍵を管理」→「キーを追加」→「新しい鍵を作成」へ
  2. キーのタイプは「JSON」を選択し、「作成」をクリック
  3. JSONファイルが自動的にダウンロードされる。

秘密鍵を含むファイルをダウンロードします。この鍵を紛失すると復元できなくなるため、ファイルは大切に保管してください。

STEP
Googleカレンダーにサービスアカウントを共有設定

サービスアカウントには個人のGoogleカレンダーへのアクセス権限がないため、明示的にカレンダーに共有する必要があります。

  1. Googleカレンダーにアクセスする。
  2. 左側の「マイカレンダー」から対象カレンダーにマウスオーバーし、︙メニューから「設定と共有」へ
  3. 「共有する相手」セクションの「+ ユーザやグループを追加」をクリック
  4. サービスアカウントのメールアドレスを入力、権限を「変更および共有の管理権限」に設定し、「送信」をクリック

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

STEP
カレンダーIDの確認

ページ中盤にあるカレンダー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ではあなたの業務に最適な自動化通知システムの設計・開発を承っております。
是非お気軽にご相談ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次