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プロジェクトを作成する

  1. Google Cloud Consoleにアクセスします。
  2. 上部のプロジェクト選択ドロップダウンをクリック → 新しいプロジェクト
  3. プロジェクト名を入力して作成をクリックします。

ステップ2:APIを有効にする

  1. 左メニューでAPIとサービスライブラリをクリックします。
  2. 以下の各APIを検索して有効にします:
    • Google Calendar API
    • Gmail API
    • Google Drive API
    • Google Docs API
    • Tasks API

ステップ3:OAuth同意画面を設定する

  1. APIとサービスOAuth同意画面をクリックします。
  2. ユーザータイプ:外部を選択して作成をクリックします。
  3. アプリ名、ユーザーサポートメール、開発者連絡先メールを入力します。
  4. 保存して続行をクリックします。
  5. スコープを追加または削除で、以下のスコープを追加します:
    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
    
  6. テストユーザーのステップで自分のGoogleアカウントを追加します。

ステップ4:OAuth認証情報を作成する

  1. APIとサービス認証情報をクリックします。
  2. 認証情報を作成OAuthクライアントIDを選択します。
  3. アプリケーションの種類:ウェブアプリケーションを選択します。
  4. 承認済みリダイレクトURIにStarnionのコールバックURIを追加します:
    http://localhost:8080/auth/google/callback
    

    本番環境の場合は、これを実際のドメインに置き換えてください(例:https://yourdomain.com/auth/google/callback)。

  5. 作成をクリックして、クライアント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から接続する

  1. Starnion Web UIにログインします。
  2. 左メニューで設定連携タブをクリックします。
  3. Googleセクションで接続をクリックします。
  4. Googleアカウント選択画面でリンクするアカウントを選択します。
  5. 権限画面で許可をクリックします。
  6. 接続されると、接続済みステータスが表示されます。

Telegramから接続する

TelegramボットからもGoogle連携を開始できます。

  1. 「Googleを接続」や「Googleをリンク」などのメッセージをボットに送信します。
  2. ボットが認証URLを送信します。
  3. 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の管理

接続解除の方法

  1. 設定 → 連携 → Googleセクション。
  2. 接続解除をクリックします。
  3. 保存されたOAuthトークンは接続解除後すぐに削除されます。

AIに「Googleを切断して」と依頼することもできます。


重要な注意事項

セキュリティ

  • OAuthトークン(アクセストークン + リフレッシュトークン)はデータベースに保存されます。
  • アクセストークンが期限切れになると、リフレッシュトークンを使用して自動的に更新されます。
  • リフレッシュトークンが期限切れになると、再接続が必要です(通常6ヶ月後)。

Googleスキルの有効化

Googleスキルはデフォルトで無効になっています。管理者は使用前にスキルを有効にする必要があります。

  • 設定 → スキルでGoogleスキルの有効化トグルをオンにします。
  • Google OAuthアプリ設定(GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET)が設定されていない場合、スキルを有効にしても機能しません。

トラブルシューティング

「Google連携が設定されていません」

サーバーに GOOGLE_CLIENT_IDGOOGLE_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が受信者、件名、本文を確認し、確認後にのみ送信します。


Copyright © 2025 StarNion. All rights reserved.  |  v0.1.1