Google GeminiからGoogleカレンダーの情報を取得してみた

Google GeminiからGoogleカレンダーの情報を取得してみた

2025.09.10

データ事業本部の荒木です。

最近よく耳にする Google Gemini。生成AIとしてテキスト生成や検索サポートに使えるだけでなく、実は Googleサービスと連携 できるってご存じでしょうか?
私はふと「Geminiから直接Googleカレンダーの予定を確認できるのでは?」と思い立ち、実際に試してみました。

なぜ試してみたのか

背景には、社内の工数管理 の課題として以下の課題がありました。

  • プロジェクトごとにどのくらい工数を使ったかを ローカルにメモ し、最終的に 工数管理用のWebアプリに登録 する必要がある
  • これまではその入力作業をすべて 手動で行っていた

プロジェクトの工数実績を確認するうえで、これらが入力されていないとプロジェクトの工数実績が可視化できません。
ただ正直、毎日工数を手動で入力するのも面倒なので「AIを使ってもっと楽にできないかな?」と思ったのがきっかけです。

アイデアとしては:

  1. Googleカレンダーに「どのプロジェクトに何時間使ったか」を予定として記録する
  2. その情報をAIから取得して、CSV形式のデータにする

そう考えて、まずはGeminiでGoogleカレンダーの情報が取得できるかを試してみました。

実際にやってみた

テスト用に以下のようなとっても健全な1日の作業スケジュールを作成しました。

スクリーンショット 2025-09-10 163011

このスケジュールで、案件に関係する情報は「開発作業」と「顧客定例」になりますので、これらの情報だけ取得できるようにするのが今回のゴールです。

まず、Geminiに対して以下のリクエストを投げてみます。

			
			今日のgoogleカレンダーのスケジュールを箇条書きで取得してください。

		

するとGoogleカレンダーに作成している今日の全てのイベント名・開始時間・終了時間 が一覧で返ってきます。

スクリーンショット 2025-09-10 163646

これでは案件に関係ないイベント情報も含まれてしまうので、案件に関係するデータだけにフィルターし、最終的にはCSVファイルとしてダウンロードできるようにします。

1. 【】で囲まれた文字が含まれているイベントだけを抽出

スケジュールに登録したイベントで取得したいイベントだけにフィルターして取得するために、スケジュール作成時に末尾に【】で囲った情報を付与することで取得した情報をフィルターをできるようにイベントを作成していますので、以下の指示でデータをフィルターしてもらいます。

			
			出力された結果を以下の条件でフィルターしてください。

IF イベント名の末尾に【】で囲まれた文字が含まれている THEN 取得対象 ELSE 除外対象

		

すると「顧客定例【顧客A】」のように、案件に関係あるスケジュール以外をフィルターすることができました。

スクリーンショット 2025-09-10 163731

次にこれらのデータをCSV形式に変換していきます。

2. CSV形式に変換

最終的には取得したデータをCSVファイルにしたかったのですが、GeminiにCSVファイルを作成するように依頼しても、そういう機能はないとしか返答されないためCSVファイルにはできませんでした。
たまに成功することがあったので全くできないわけではないようですが、指示の出し方によってCSVファイルを作成することができるかもしれません。

今回自分が試している中で、CSV形式のデータをDataURIとしてエンコードしたURLを作成してもらうことで、ブラウザにURLを入力してCSVファイルとしてダウンロードする方法が安定した結果を得ることができました。

今回は「作業名,プロジェクト名,開始時間,終了時間」の形式でCSVにしてもらいます。

イベント名の構成は「作業名【プロジェクト名】」です。

フィルターした結果をヘッダーが「作業名,プロジェクト名,開始時間,終了時間」のDataURI形式としてCSVファイルをダウンロードできるようにURLを提供してください。

スクリーンショット 2025-09-10 163929

CSVデータ量が多いとURLが長くなりすぎるので作成にも時間かかるのですが、数行程度のCSVデータであれば全然問題なく以下のようにURLを作成してくれます。

1回だけCSVファイルをGeminiが作成してくれて、そのままダウンロードできたことがあったのですが再現性が無く断念しました。。。

3. Gemの作成

カレンダーからイベント情報を取得し、フィルターしてCSV形式のデータにするまでの指示を1つのプロンプトにまとめて実行したいので、GeminiのGemにそのプロンプトをカスタム指示として設定することで、一発でカレンダー情報をCSV形式で取得するようにします。

Gemのカスタム指示内容

カスタム指示は以下のようなものを作成しています。

			
			# 概要    
ユーザーのgoogleカレンダーAPIを使って、イベント情報を取得します。

## タスク    
AIが実行するタスクは以下です。

1. カレンダールールに従って、googleカレンダーAPIを実行してイベント情報を箇条書きで取得します。
2. 取得したイベント情報をフィルタールールに従ってフィルターします。
3. フィルター後の残ったイベント情報をCSV加工ルールに従ってCSV形式のデータにします。
4. CSV形式のデータをテキストとしてURLエンコードし、DataURIをユーザーに提供します。

## 処理ルール
### カレンダールール
・ユーザーはAIに取得するイベントの開始日付がいつの日付をYYYYMMDD形式で指定します。
・ユーザーが指定した日付からAPIを実行する日付までのイベント情報を以下のルールで取得します。

IF ユーザーがAPIを実行する日付(2025/08/15)を基準として、過去の日付(2025/08/01)を指定した場合 THEN 2025/08/01から2025/08/15までのイベント情報を取得する。
IF ユーザーがAPIを実行する日付(2025/08/15)を基準として、同じ日付(2025/08/15)を指定した場合 THEN 2025/08/15のイベント情報を取得する。

・取得する情報は「イベント名」、「開始時間」、「終了時間」

### フィルタールール
1. IF "イベント名に【】で囲まれた文字が1つ以上ある" THEN "CSVのレコードを残す" ELSE "レコードを除外する"
2. IF "【】で囲まれた文字が複数ある" THEN "イベント名の末尾に【】で囲まれた文字がある場合はCSVのレコードを残す" ELSE "レコードを除外する"

### CSV加工ルール
・CSVの項目は「日付」、「プロジェクト名」、「実績時間」、「備考」に加工する。
・イベント名は以下のデータとなっているため、各項目に分割する
「備考」【「プロジェクト名」】
・日付はイベントの「開始時間」をYYYY-MM-DD形式にする。
・「実績時間」は、「終了時間」から「開始時間」を引いた時間を計算し、0.25/h単位になるように四捨五入した値とする。
・CSV形式はダブルクォーテーションの囲み文字有とする。
・CSVのエンコードはUTF-8とする。

		

最初フィルターの条件を日本語でずらずらと書いていたのですが、出力結果のばらつきがひどかったです。
色々試していてプログラム言語のようにIF、THEN、ELSEで条件文を書くと、結果が安定したので条件文についてはこの書き方をしています。

Gemの作成

新しくGemを作成し、上記のプロンプトをカスタム指示に入力して保存します。

スクリーンショット 2025-09-10 160332

試しに今日の日付のみ入力すると以下のような結果が返ってきます。

ダウンロード用URLをブラウザに入力するとCSVファイルがダウンロードできますので、中身を確認する欲しかったイベントの情報だけ取得できて、関係ないイベントは除外できていることが確認できました。

			
			"日付","プロジェクト名","実績時間","備考"
"2025-09-10","顧客C","2.5","開発作業"
"2025-09-10","顧客B","3.0","開発作業"
"2025-09-10","顧客A","1.0","顧客定例"

		

使ってみての感想

  • 便利だった点

    • Googleカレンダーの情報はプログラムで取得したい場合はGoogle Calendar APIを使って取得する必要がありますが、GeminiからはAPIキーなどを発行せずにAPIを実行しデータを取得できるため非常に簡単です。
  • 気になった点

    • プロンプトの完成度が良くないためか、API実行に失敗したり実行結果にムラが出ることがあります。
    • Gemini自身はCSVファイルを作成することができないと言っていますが、作成できたこともあったので指示の仕方によってはCSVファイルを作ることはできるかも。。。?
    • 1日のイベント時間の合計を計算した際に、計算結果が間違っているときもあるので、単純な計算でもうまくいかなかったこともあったのですごくモヤモヤします。。。

まとめ

今回試してみて、「GeminiからGoogleカレンダーに直接アクセスできる」というのはかなり便利な発見でした。
特に工数管理のように 予定データや実績データを二次利用したいケース では、大きな時短につながります。

CSVファイルではなくスプレッドシートに出力することもできたので、今後はカレンダー情報をもとにGeminiで出力した結果をスプレッドシートに出力し、GASでWebアプリに登録するところまでできるようになれば、日々の面倒な作業が自動化できるなと思っています。
気になる方はぜひ一度試してみてください。

Share this article

FacebookHatena blogX

Related articles