Google連携
StarnionをGoogleアカウントに接続すると、AIエージェントが自然言語でGoogleカレンダー、Gmail、Googleドライブ、Googleドキュメント、Googleタスクを操作できるようになります。接続後、TelegramとウェブUIの両方からこれらすべてを使用できます。
概要
Google連携では以下のことができます:
- カレンダー:「明日の午前10時にチームミーティングをスケジュールして」のように自然言語でイベントを作成、表示、削除できます
- Gmail:受信メールを検索し、新しいメールを送信できます
- ドライブ:ファイルリストを表示し、ドライブにファイルをアップロードできます
- ドキュメント:新しいGoogleドキュメントを作成し、既存のドキュメントの内容を読み込めます
- タスク:To-Doを追加し、リストを表示し、アイテムを完了としてマークできます
オプトイン機能: Google連携はデフォルトで無効になっています。管理者がOAuthアプリを設定し、各ユーザーが設定で接続を完了してから使用できます。
対応機能
| サービス | 対応機能 |
|---|---|
| カレンダー | イベントの作成、今後のイベントの表示、イベントの削除 |
| Gmail | 受信メールリストの表示、メールの送信 |
| ドライブ | ファイルリストの表示、ファイルのアップロード |
| ドキュメント | ドキュメントの作成、ドキュメントコンテンツの読み込み |
| タスク | To-Doの追加、リストの表示、完了のマーク、削除 |
前提条件:Google Cloud Console OAuthアプリの作成
Google連携を使用するには、サーバー管理者がGoogle Cloud ConsoleでOAuth 2.0認証情報を作成し、Starnionに設定する必要があります。
一般ユーザー: このステップはサーバー管理者が実行します。管理者に連携の設定を依頼するか、Dockerを自分で実行している場合のみ以下の手順に従ってください。
ステップ1:Google Cloudプロジェクトを作成する
- Google Cloud Consoleにアクセスします。
- 上部のプロジェクト選択ドロップダウンをクリック → 新しいプロジェクト。
- プロジェクト名を入力して作成をクリックします。
ステップ2:APIを有効にする
- 左メニューでAPIとサービス → ライブラリをクリックします。
- 以下の各APIを検索して有効にします:
Google Calendar APIGmail APIGoogle Drive APIGoogle Docs APITasks API
ステップ3:OAuth同意画面を設定する
- APIとサービス → OAuth同意画面をクリックします。
- ユーザータイプ:外部を選択して作成をクリックします。
- アプリ名、ユーザーサポートメール、開発者連絡先メールを入力します。
- 保存して続行をクリックします。
- スコープを追加または削除で、以下のスコープを追加します:
https://www.googleapis.com/auth/calendar https://www.googleapis.com/auth/gmail.send https://www.googleapis.com/auth/gmail.readonly https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/tasks - テストユーザーのステップで自分のGoogleアカウントを追加します。
ステップ4:OAuth認証情報を作成する
- APIとサービス → 認証情報をクリックします。
- 認証情報を作成 → OAuthクライアントIDを選択します。
- アプリケーションの種類:ウェブアプリケーションを選択します。
- 承認済みリダイレクトURIにStarnionのコールバックURIを追加します:
http://localhost:8080/auth/google/callback本番環境の場合は、これを実際のドメインに置き換えてください(例:
https://yourdomain.com/auth/google/callback)。 - 作成をクリックして、クライアントIDとクライアントシークレットをコピーします。
環境変数の設定
Starnionの .env ファイルに取得した認証情報を設定します。
GOOGLE_CLIENT_ID=123456789-abcdefg.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-xxxxxxxxxxxxxxxxxxxx
GATEWAY_PUBLIC_URL=http://localhost:8080
GATEWAY_PUBLIC_URL はOAuthコールバックURIのベースアドレスです。Gatewayはこの値に /auth/google/callback を組み合わせてリダイレクトURIを構成します。
変更後はGatewayサービスを再起動します。
docker compose restart gateway
セットアップ:Googleアカウントを接続する
Web UIから接続する
- Starnion Web UIにログインします。
- 左メニューで設定 → 連携タブをクリックします。
- Googleセクションで接続をクリックします。
- Googleアカウント選択画面でリンクするアカウントを選択します。
- 権限画面で許可をクリックします。
- 接続されると、接続済みステータスが表示されます。
Telegramから接続する
TelegramボットからもGoogle連携を開始できます。
- 「Googleを接続」や「Googleをリンク」などのメッセージをボットに送信します。
- ボットが認証URLを送信します。
- URLをクリックして同じOAuthフローを実行します。
私: Googleをリンク
Bot: 以下のリンクをクリックしてGoogleアカウントを接続してください:
http://yourdomain.com/auth/google/telegram?uid=...
使い方
Googleアカウントが接続されたら、自然言語でAIにリクエストします。
Googleカレンダー
私: 明日のスケジュールは?
Bot: 明日の予定されているイベント:
- 10:00:週次チームミーティング
- 14:00:クライアントレポート
私: 来週水曜日の午後2時に1時間のプロジェクトミーティングを追加して
Bot: イベント「プロジェクトミーティング」を作成しました。
- 日時:2026-03-11 14:00 – 15:00
私: 明日の午後2時のミーティングをキャンセルして
Bot: イベント「クライアントレポート」を削除しました。
Gmail
私: 未読メールを表示して
Bot: 未読メール(最新10件):
- [重要] 契約確認のリクエスト(送信者:partner@example.com)
- 週次ニュースレター(送信者:news@example.com)
私: partner@example.comに「契約確認完了」という件名でメールを送って
Bot: 送信前に確認してください。
受信者:partner@example.com
件名:契約確認完了
送信しますか?
私: はい、送ってください
Bot: メールを送信しました。
注意: AIはメールを送信する前に内容を確認します。「はい、送ってください」と確認した後にのみ送信します。
Googleドライブ
私: ドライブでレポートファイルを探して
Bot: ドライブファイルリスト(検索:「レポート」):
- 2026年Q1売上レポート.xlsx
- プロジェクト最終レポート.docx
私: 今日のミーティングメモファイルをドライブにアップロードして
Bot: (添付ファイルをドライブにアップロードしました。)
「meeting_notes_20260308.pdf」をドライブにアップロードしました。
Googleドキュメント
私: 「2026年Q2計画」というGoogleドキュメントを作成して
Bot: ドキュメント「2026年Q2計画」を作成しました。
https://docs.google.com/document/d/abc123...
私: ドライブドキュメントabc123の内容を読んで
Bot: ドキュメント:2026年Q2計画
...
Googleタスク
私: 「提案書の草稿を作成する」というTo-Doを明日期限で追加して
Bot: To-Do「提案書の草稿を作成する」を追加しました。
私: To-Doリストを表示して
Bot: To-Doリスト:
⬜ 提案書の草稿を作成する
⬜ チームのフィードバックを収集する
⬜ 週次レポートを書く
私: 「提案書の草稿を作成する」を完了にマークして
Bot: To-Do「提案書の草稿を作成する」を完了としてマークしました。
権限スコープ
Starnionが要求するGoogleの権限スコープは以下の通りです。
| スコープ | 目的 |
|---|---|
calendar |
イベントの読み込みと書き込み |
gmail.send |
メールの送信 |
gmail.readonly |
メールリストの表示 |
drive |
ファイルリストの表示、アップロード |
documents |
ドキュメントの作成と読み込み |
tasks |
To-Doの管理 |
接続解除の方法
- 設定 → 連携 → Googleセクション。
- 接続解除をクリックします。
- 保存されたOAuthトークンは接続解除後すぐに削除されます。
AIに「Googleを切断して」と依頼することもできます。
重要な注意事項
セキュリティ
- OAuthトークン(アクセストークン + リフレッシュトークン)はデータベースに保存されます。
- アクセストークンが期限切れになると、リフレッシュトークンを使用して自動的に更新されます。
- リフレッシュトークンが期限切れになると、再接続が必要です(通常6ヶ月後)。
Googleスキルの有効化
Googleスキルはデフォルトで無効になっています。管理者は使用前にスキルを有効にする必要があります。
- 設定 → スキルでGoogleスキルの有効化トグルをオンにします。
- Google OAuthアプリ設定(
GOOGLE_CLIENT_ID、GOOGLE_CLIENT_SECRET)が設定されていない場合、スキルを有効にしても機能しません。
トラブルシューティング
「Google連携が設定されていません」
サーバーに GOOGLE_CLIENT_ID と GOOGLE_CLIENT_SECRET 環境変数が設定されていません。.env ファイルを確認してGatewayを再起動してください。
「最初にGoogleアカウントを接続してください」
Googleアカウントをまだ接続していません。Web UIの設定 → 連携 → Googleで接続を完了してください。
OAuth同意画面の「このアプリは確認されていません」警告
開発中は正常です。詳細 → [アプリ名]に移動するをクリックして続行します。本番デプロイ向けには、Googleにアプリの確認をリクエストするか、組織内のユーザーのみを対象とする場合はユーザータイプを内部に設定してください。
「Notion APIキーが無効です」(または401エラー)
OAuthトークンが期限切れまたは取り消されている可能性があります。接続解除して再接続してください。
よくある質問
Q: 複数のGoogleアカウントを接続できますか? A: 現在、ユーザーごとに1つのGoogleアカウントのみ接続できます。
Q: TelegramからのGoogle接続はWeb UIからの接続と同じですか? A: はい。同じStarnionアカウントを通じて接続した場合、どのチャンネルで接続しても同じGoogleトークンが共有されます。
Q: GoogleタスクとカレンダーをIA両方使用できますか? A: はい、Google接続後は自然言語で両方のサービスを使用できます。
Q: AIがGmailを通じて任意にメールを送信できますか? A: いいえ。メールを送信する前に、AIが受信者、件名、本文を確認し、確認後にのみ送信します。