• #gogcli
  • #google-chat
  • #google-workspace
  • #cli
開発未分類メモ

gogcliでGoogle Chatのメッセージを送受信する設定手順

結論

gogcliでGoogle Chatを使うには、Google Cloud ConsoleでChat APIを有効化するだけでは足りない。Chat appの「構成」を保存する必要がある。構成を保存すれば gog chat spaces listgog chat messages send が動くようになる。

背景

gogcli(Google Workspace CLIツール)でGoogle Chatのスペース一覧取得やメッセージ送信を試みたところ、以下のエラーが発生した。

Google API error (404 notFound): Google Chat app not found.
To create a Chat app, you must turn on the Chat API and configure the app in the Google Cloud console.

Chat APIは有効化済みだったため、原因がわかりにくかった。

Chat APIは有効になっている

原因

Google Chat APIはAPIの有効化だけでは使えない。Chat appとしての**構成(Configuration)**を保存する必要がある。これはGoogle Cloud Consoleの「Chat API」→「構成」タブから設定する。

設定手順

1. Google Cloud Consoleで構成タブを開く

Chat APIのページにある「構成」タブをクリックする。

Chat appの構成画面

2. 必須フィールドを埋める

フィールド設定値
アプリ名gogcli(任意)
アバターのURL任意のHTTPS PNG画像URL
説明CLI tool など

3. インタラクティブ機能の設定

メッセージの送信もしたい場合は、インタラクティブ機能をオンにして以下を設定する。

  • 「スペースとグループの会話に参加する」にチェックを入れる
  • 接続設定は「HTTPエンドポイントURL」を選択
  • トリガーのURL欄はすべて https://example.com で埋める(CLIからの利用なら実際のエンドポイントは不要)

4. 公開設定

「このチャットアプリを(ドメイン名)の特定のユーザーとグループが使用できるようにします」にチェックを入れ、自分のメールアドレスを追加する。

5. 保存

Saveボタンをクリックして構成を保存する。

動作確認

スペース一覧の取得

gog chat spaces list

メッセージの送信

gog chat messages send spaces/XXXXXXXX --text "テスト送信です"

注意: フラグは --body ではなく --text

テストメッセージの送信結果

送信者はユーザー名ではなく、Chat app名(この場合「gogcli」)で表示される。

メッセージの削除(独自実装)

gogcli本家(v0.9.0時点)には chat messages delete が未実装だったため、独自にコマンドを追加した。詳細は gogcliセットアップガイド の「本家にない機能を追加する」セクションを参照。

# メッセージ一覧を新しい順に取得
gog chat messages list spaces/AAAA9qhlGLw --max 10 --order "createTime desc" --account [email protected]

# メッセージを削除
gog chat messages delete spaces/AAAA9qhlGLw/messages/<messageId> --account [email protected] --force

Google Chat上では「メッセージは投稿者によって削除されました(アプリ経由)」と表示される。

API側の削除権限

認証方式削除できるメッセージ
App認証Chat appが送信したメッセージのみ
User認証自分が送信したメッセージ。スペースマネージャーなら他人のも可能

スレッド形式の投稿

メッセージをスレッドにまとめて投稿できる。

# 親メッセージを送信(新しいスレッドが作られる)
gog chat messages send spaces/AAAA9qhlGLw --text "*【タイトル】*
本文テスト
※スレッドに続きます" --account [email protected]

# 返信にはスレッドIDを指定
gog chat messages send spaces/AAAA9qhlGLw --text "返信テキスト" --thread spaces/AAAA9qhlGLw/threads/<threadId> --account [email protected]

テキスト書式

Google Chat APIはマークダウンの一部をサポートしている。

書式記法結果
太字*テキスト*テキスト
斜体_テキスト_テキスト
取り消し線~テキスト~テキスト
コード`テキスト`テキスト

画像の共有

Google Chat APIはメッセージに画像を直接添付できない(APIの制限)。代わりにDriveにアップロードしてリンクを共有する。

運用フロー:ローカル画像 → Drive → Chatリンク

# 1. ローカル画像をDriveにアップロード
gog drive upload C:\Users\numbe\Pictures\screenshot.png --parent <folderId> --account [email protected]

# 2. ChatスレッドにDriveリンクを投稿
gog chat messages send spaces/AAAA9qhlGLw --text "https://drive.google.com/file/d/<fileId>/view" --thread spaces/AAAA9qhlGLw/threads/<threadId> --account [email protected]

できること・できないこと

やりたいこと対応
ローカル画像をDriveにアップロード可能(gog drive upload
Chatにテキスト+Driveリンクを送信可能
Chatに画像ファイルを直接添付不可(Chat APIの制限)
Googleドキュメントに画像を挿入不可(gogcli未対応。Docs APIのBatchUpdateが必要)
クリップボード画像を直接送信不可(一旦ファイル保存 → Drive upload が必要)

Drive画像検索の注意点

gog drive search はフルテキスト検索専用で、mimeTypeフィルタに対応していない。画像ファイルを探すには drive ls --query を使う。

# NG: searchはfullText検索のためmimeType指定が効かない
gog drive search "mimeType='image/png'"

# OK: ls --queryならDrive APIクエリ構文がそのまま使える
gog drive ls --query "mimeType='image/png'" --max 10 --account [email protected]

# OK: ファイル名での検索はsearchでも可能
gog drive search "NAAIM" --account [email protected]

まとめ

  • Chat APIの有効化だけでは不十分で、Chat appの構成保存が必要
  • CLIから使うだけでも構成のフォーム入力は必須(HTTPエンドポイントはダミーURLでOK)
  • 公開設定で自分のメールアドレスを追加しないと使えない
  • メッセージ送信のフラグは --text--body ではない)
  • メッセージの削除は本家未実装のため独自に追加した(動作確認済み)
  • スレッド形式の投稿は --thread オプションで対応
  • 画像はDriveにアップロードしてリンク共有する運用が現実的
  • Drive画像検索は drive ls --query を使う(drive search はフルテキスト検索のみ)