name: coda description: 通过REST API v1进行通用Coda文档管理。支持列出/创建/更新/删除文档、管理表格/行/页面、触发自动化操作以及探索文档结构。需要设置CODA_API_TOKEN环境变量。删除操作需要明确确认;发布和权限变更需要明确的用户意图。
Coda API 技能
通过Coda REST API v1与文档、表格、行、页面和自动化功能进行交互。
使用场景
当用户想要执行以下操作时使用此技能:
- 列出、搜索、创建或删除Coda文档
- 从表格读取或写入数据(插入、更新插入、更新、删除行)
- 探索文档结构(页面、表格、列、公式、控件)
- 触发自动化操作(点击按钮)
- 导出文档内容或分析数据
不适用场景
- 请勿用于与API无关的通用文档编辑建议
- 请勿用于Pack开发(此技能涵盖文档管理,而非Pack创建)
- 请勿用于需要文档制作者权限的操作,除非确认用户拥有相应权限
前提条件
- API令牌:设置环境变量
CODA_API_TOKEN,包含您的Coda API令牌- 获取令牌地址:https://coda.io/account -> API设置
- Python 3.7+ 并安装
requests库 - 权限:某些操作(创建文档、更新文档标题、创建页面)需要在工作区中拥有文档制作者角色
CLI工具使用
技能包含位于scripts/coda_cli.py的Python CLI工具:
# 设置
export CODA_API_TOKEN="your_token_here"
# 列出文档
python scripts/coda_cli.py docs list --query "项目"
# 获取文档信息
python scripts/coda_cli.py docs get <文档ID>
# 创建文档
python scripts/coda_cli.py docs create --title "我的新文档"
# 列出文档中的表格
python scripts/coda_cli.py tables list <文档ID>
# 列出表格中的行
python scripts/coda_cli.py rows list <文档ID> <表格ID>
# 插入行
python scripts/coda_cli.py rows insert <文档ID> <表格ID> --data '{"名称": "任务1", "状态": "已完成"}'
# 更新行
python scripts/coda_cli.py rows update <文档ID> <表格ID> <行ID> --data '{"状态": "进行中"}'
# 删除行(需要确认)
python scripts/coda_cli.py rows delete <文档ID> <表格ID> <行ID>
# 列出页面
python scripts/coda_cli.py pages list <文档ID>
# 触发自动化(点击按钮)
python scripts/coda_cli.py automations trigger <文档ID> <按钮ID>
# 强制删除无需确认(谨慎使用)
python scripts/coda_cli.py docs delete <文档ID> --force
工作流程指南
1. 文档ID提取
Coda文档ID可从浏览器URL中提取:
- URL:
https://coda.io/d/_dAbCDeFGH/项目跟踪器 - 文档ID:
AbCDeFGH(移除_d前缀)
CLI工具接受完整URL和原始ID。
2. 速率限制处理
API有严格的速率限制:
- 读取:每6秒100个请求
- 写入(POST/PUT/PATCH):每6秒10个请求
- 写入文档内容:每10秒5个请求
- 列出文档:每6秒4个请求
CLI工具对429响应自动实施指数退避。
3. 异步操作
写入操作返回HTTP 202并附带requestId。CLI工具可使用--wait标志可选地轮询完成状态。
4. 安全防护
删除操作(行、文档、页面、文件夹):
- 在交互模式下始终需要明确的用户确认
- 仅在自动化/脚本中使用
--force标志 - 显示将要删除内容的预览
发布(docs publish):
- 需要明确的
--confirm-publish标志 - 不能与
--force结合使用
权限(acl命令):
- 任何变更都需要明确的
--confirm-permissions标志 - 读取操作(列出权限)始终允许
自动化触发器:
- 无需特殊标志但会记录日志
- 用户应知晓自动化可能触发通知或外部操作
5. 分页
列表命令支持:
--limit:最大结果数(默认25,各端点最大值不同)--page-token:用于获取后续页面- CLI使用
--all标志自动跟随页面
常见模式
批量行操作
# 从JSON文件插入多行
python scripts/coda_cli.py rows insert-batch <文档ID> <表格ID> --file rows.json
# 使用关键列更新插入行(存在则更新,不存在则插入)
python scripts/coda_cli.py rows upsert <文档ID> <表格ID> --file rows.json --keys "邮箱"
文档间同步
# 从源导出
python scripts/coda_cli.py rows list <源文档> <表格ID> --format json > export.json
# 导入到目标
python scripts/coda_cli.py rows insert-batch <目标文档> <表格ID> --file export.json
探索结构
# 获取完整文档结构
python scripts/coda_cli.py docs structure <文档ID>
# 列出所有公式
python scripts/coda_cli.py formulas list <文档ID>
# 列出所有控件
python scripts/coda_cli.py controls list <文档ID>
错误处理
常见HTTP状态码:
400:错误请求(无效参数)401:无效/过期的API令牌403:权限不足(需要文档制作者角色)404:资源未找到429:速率限制(实施退避)202:已接受但尚未处理(异步操作)
安全考虑
- 令牌存储:切勿将
CODA_API_TOKEN提交到版本控制 - 令牌范围:令牌对用户可访问的所有文档拥有完全访问权限
- 工作区限制:创建文档需要在目标工作区中拥有文档制作者角色
- 数据暴露:行数据可能包含敏感信息;谨慎处理导出
示例
列出和筛选文档
python scripts/coda_cli.py docs list --is-owner --query "项目"
从模板创建文档
python scripts/coda_cli.py docs create --title "第四季度规划" --source-doc "模板文档ID"
更新行状态
python scripts/coda_cli.py rows update AbCDeFGH grid-xyz row-123 \
--data '{"状态": "已完成", "完成日期": "2024-01-15"}'
删除多行(需要确认)
python scripts/coda_cli.py rows delete-batch AbCDeFGH grid-xyz \
--filter '{"状态": "已归档"}' \
--confirm "删除所有已归档的行?"
导出表格到CSV
python scripts/coda_cli.py rows list AbCDeFGH grid-xyz --format csv > export.csv