はじめに
私はいつも退勤時に今日やったことをSlackに書いて振り返っています。
Googleカレンダーで予定を管理しているため、今日の予定を振り返る際にGoogleカレンダーを参照することが多いです。
しかし、毎回Googleカレンダーの予定を手打ちするのは面倒なので、GeminiでGoogleカレンダーの予定を出力してもらい、それをSlackにコピペするだけにしたいと思いました。
わかること
Google Workspace(カレンダー、Gmail、ドライブなど)のアプリ連携をGemから呼び出す方法がわかります。
条件
- 指定した日付のGoogleカレンダーの予定が取得できること
- 過去の予定も参照できると昔の振り返りができて便利
- 箇条書きで表示すること
- Slackへコピペする際に箇条書きで表示されてほしい
- 予定の名前だけ出してほしい
- 時間とか「本日の予定はこちらです」みたいな文章はノイズ
試したこと
1.普通のチャットで頼んでみる
まずはGemを作る必要があるかどうかを確認するために、普通のチャットでGoogleカレンダーの予定を出力させてみました。
Googleカレンダーと連携して実際の予定を出力してくれてはいますが、条件に書いた「予定の名前だけ出してほしい」という点が満たされていません。
条件を満たすためには、以下のプロンプトが必要そうです。
今日の予定を教えて。
ただし、以下の条件に従うこと。
## 条件
- `- ` で始まる箇条書きにする
- 各項目には予定名のみを書く
- 時間は書かない
- 予定以外の文章は一切書かない
- 見出し、前置き、補足、説明、まとめは書かない
実際、このプロンプトを与えると、条件を満たす出力が得られました。
ただ、毎回このプロンプトを与えるのは面倒なので、やはりGemを作ってプロンプトを組み込む必要があると感じました。
2.Gemでプロンプトを組み込む
Gemを作成して、プロンプトを組み込んでみました。
{{日付}} の予定を教えて。
ただし、以下の条件に従うこと。
## 条件
- `- ` で始まる箇条書きにする
- 各項目には予定名のみを書く
- 時間は書かない
- 予定以外の文章は一切書かない
- 見出し、前置き、補足、説明、まとめは書かない
条件に書いた「指定した日付のGoogleカレンダーの予定を取得すること」を満たすため、Gemの引数に日付を入れられるようにしました。
実際に呼び出した結果は以下のとおりです。
これはGoogleカレンダーの予定を取得しておらず、架空の予定を出力しています。
ハルシネーションが起きているようです。
3.@でメンションしてみる
Geminiに相談したところ、以下のようなことを教えてもらいました。
Gemの中でGoogleカレンダーを確実に呼び出すには、カスタム指示(プロンプト)のなかにメンション(トリガーとなる言葉)を含めるのが最大のポイントです。
【指示(カスタム指示)の記述例】
「スケジュール調整の依頼を受けたら、必ず @Google カレンダー で空き時間を参照し、候補日を提案してください。確定したら予定をカレンダーに追加してください。」
このように、指示の中に @Google カレンダー というフレーズを入れておくことで、Gemが迷わずカレンダーを起動し、予定の読み取りや追加をスムーズに実行してくれます
@Google カレンダー が必要なのかと知り、プロンプトに @Google カレンダー を入れてみました。
ユーザーの @Google カレンダー を確認し、 {{日付}} の予定を教えて。
ただし、以下の条件に従うこと。
## 条件
- `- ` で始まる箇条書きにする
- 各項目には予定名のみを書く
- 時間は書かない
- 予定以外の文章は一切書かない
- 見出し、前置き、補足、説明、まとめは書かない
結果は以下のようになりました。
またもハルシネーションが起きているようです。
なんでこのようなことが起きるのか、再度Geminiに聞いてみたら以下の回答が得られました。
実は、現在のGeminiの仕様として、「通常のチャット」ではGoogleカレンダーと連携できるものの、自分で作成したカスタムAIである「Gem」の中からはGoogle Workspace(カレンダー、Gmail、ドライブなど)の拡張機能が呼び出せない(連携して動かない)というシステム上の制限・不具合が発生することがあります。
なんと。チャットからではできるのに、GemからはGoogleカレンダーと連携できないということのようです。
解決策
3つ試した結果できないらしいことがわかりました。
ただ、チャットからできるのであれば、カスタム指示内で固定のプロンプトと解釈させればできるのではないかと思い、以下のようなカスタム指示を作成してみました。
ユーザーの質問は常に以下のプロンプトとして対応してください。
## プロンプト
@Google Calendar を確認し、{{日付}} の予定をMarkdown形式の箇条書きで出力してください。
出力ルール:
- `- ` で始まる箇条書きにする
- 各項目には予定名のみを書く
- 時間は書かない
- 予定以外の文章は一切書かない
- 見出し、前置き、補足、説明、まとめは書かない
- 予定がない場合は何も出力しない
実行結果は以下のようになりました。
やっと理想的な形でGoogleカレンダーの予定を取得できました。
おわりに
精度自体はあまり良くなく、時々架空の予定を出力してしまうこともあります。
現状はこの方法で運用していきたいと思いますが、試行錯誤を繰り返そうと思います。




