mcpField
G
google-workspace

google-workspace

github.com/mitsuhiko生产力3.2k103 次安装5 周前更新
代码仓库

关于 google-workspace

google-workspace 是通过 API 处理 Gmail、Drive、Calendar、Docs 和 Sheets 等任务的 skill。它按邮箱管理账户,每次 API 调用都必须明确指定账户。

主要功能

  1. 01通过 JavaScript 调用 Workspace API
  2. 02管理 OAuth 登录和账户配置
  3. 03按邮箱选择 API 调用账户
  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'

Agent 指南

  1. 每个用户请求尽量使用一个 exec 脚本。
  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]

说明:

  • 首次运行时会自动安装依赖项。
  • 默认身份验证模式为云端(无需本地 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]

评论

支持 Markdown