mcpField
G
google-workspace

google-workspace

github.com/mitsuhiko生産性3.2k103 回インストール5 週間前に更新
リポジトリ

google-workspace について

google-workspace は、Gmail、Drive、Calendar、Docs、Sheets などを API 経由で操作するスキルです。メールアドレスごとにアカウントを管理し、API 呼び出しごとに明示的な指定が必要です。

主な機能

  1. 01JavaScriptでWorkspace APIを実行
  2. 02OAuthログインとアカウント管理
  3. 03メールアドレスで呼び出し先を選択
  4. 04スコープと実行タイムアウトを設定

活用シーン

  1. 01指定アカウントのDriveファイル一覧を取得
  2. 02特定プロフィールでGmailを検索
  3. 03複数サービスのWorkspace APIを呼び出す

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mitsuhiko/agent-stuff --skill google-workspace

インストール後、Claude Code で/google-workspaceを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

package-lock.json
package.json
scripts/
auth.js
common.js
workspace.js

詳細

Google Workspace

Google Workspace のタスク(Gmail、Drive、Calendar、Docs、Sheets など)には、このスキルを使用してください。

ファイル

  • scripts/auth.js — OAuth のログイン/状態確認/クリア + アカウント一覧の取得
  • scripts/workspace.js — JavaScript の実行に基づく API ランナー

アカウントモデル(マルチアカウント)

このスキルはメールアドレスベースのプロフィール方式です。

  • デフォルトのアカウントはありません。
  • API 呼び出しでは、必ず --email <[email protected]> を指定してください。
  • トークンはメールアドレスごとに ~/.pi/google-workspace/tokens/ の下に保存されます。

API 呼び出しを実行する前に、ログイン済みのアカウントを確認してください。

node scripts/auth.js accounts

使い方

必ず exec を使用し、必ず --email を指定してください。

node scripts/workspace.js exec --email [email protected] <<'JS'
const me = await workspace.whoAmI();
const files = await workspace.call('drive', 'files.list', {
  pageSize: 5,
  fields: 'files(id,name,mimeType)',
});
return { me, files: files.files };
JS

exec スクリプト内で使用できます。

  • auth(認証済み OAuth クライアント)
  • google(googleapis のルート)
  • workspace.accountEmail(選択したプロフィールのメールアドレス)
  • workspace.call(service, methodPath, params, {version})
  • workspace.service(service, {version})
  • workspace.whoAmI()

省略可能なフラグ:

  • --timeout <ms>(デフォルト 30000、最大 300000)
  • --scopes s1,s2
  • --script 'return 42'

エージェント向けガイダンス

  1. ユーザーのリクエストごとに exec スクリプトを 1 つ使用することを優先してください。
  2. ペイロードは小さく保ってください(fields、maxResults、必要最小限のプロパティ)。
  3. 独立したリクエストには Promise.all を使用してください。
  4. トークンの内容を出力しないでください。
  5. ユーザーがアカウントを指定していない場合は、node scripts/auth.js accounts を実行し、明示的なメールアドレスを選択または確認してください。
  6. 認証に失敗した場合は、まず node scripts/auth.js accounts を実行して、既知のプロフィールを確認してください。
  7. アカウントの不一致が考えられる場合は、選択したプロフィールで workspace.whoAmI() を実行してください。
  8. 401/403/認証エラーが発生した場合は、アカウントを切り替える(--email ...)か、そのプロフィールに再ログインしてください。

認証エラー/アカウント切り替え手順

リクエストが認証エラー、アクセス禁止、権限不足で失敗した場合:

  1. プロフィールを一覧表示します。
node scripts/auth.js accounts
  1. 対象のアカウントで再試行します。
node scripts/workspace.js exec --email [email protected] <<'JS'
return await workspace.whoAmI();
JS
  1. トークンの期限切れ、またはスコープ不足の場合は、そのアカウントに再ログインします。
node scripts/auth.js login --email [email protected]
  1. 同じ --email を指定して、元のリクエストを再試行します。

Gmail の件数を数える簡単な例

node scripts/workspace.js exec --email [email protected] <<'JS'
const gmail = google.gmail({ version: 'v1', auth });

let trash = 0;
let pageToken;
do {
  const res = await gmail.users.messages.list({
    userId: 'me',
    q: 'in:trash',
    maxResults: 500,
    pageToken,
    fields: 'messages/id,nextPageToken',
  });
  trash += (res.data.messages || []).length;
  pageToken = res.data.nextPageToken;
} while (pageToken);

return { currentlyInTrash: trash };
JS

セットアップ + 認証

node scripts/auth.js login --email [email protected]

補足:

  • 依存関係は初回実行時に自動でインストールされます。
  • デフォルトの認証モードはcloudです(ローカルの credentials.json は不要です)。
  • ローカルモードも使用できます。GOOGLE_WORKSPACE_AUTH_MODE=local を設定し、認証情報を ~/.pi/google-workspace/credentials.json に配置してください。
  • 便利な診断コマンド:
node scripts/auth.js accounts
node scripts/auth.js status --email [email protected]
node scripts/auth.js clear --email [email protected]

コメント