管理钉钉在线表格中的表格文件、工作表和单元格数据,当用户需要创建表格、查看工作表、读取范围数据、写入单元格、追加行或查找单元格时使用。适用于涉及钉钉表格、电子表格、在线表格、工作表、单元格、报表、CSV导入导出等关键词的场景。不要在用户需要操作钉钉文档正文、管理日程、发消息或处理审批流时触发。
钉钉表格 Skill是一项面向实际任务的技能,主要用于Overview;用户可能要求你创建钉钉在线表格、管理工作表、读取单元格范围、写入指定区域、末尾追加行,或在工作表里查找数据;
它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
用户可能要求你创建钉钉在线表格、管理工作表、读取单元格范围、写入指定区域、末尾追加行,或在工作表里查找数据。表格操作有明显依赖关系:通常要先拿到 nodeId,再拿到 sheetId,最后才能精准读写。
append_rows即使 MCP tools/list 仍然暴露了 append_rows,当前也要把它视为临时不可用。原因是上游服务存在不稳定情况,可能返回成功退出码但实际写入失败,或直接报 provider 错误。
处理“末尾追加几行 / 继续追加流水 / 新增一批记录”时,必须改用下面的回退流程:
get_sheet(nodeId, sheetId) 读取 lastNonEmptyRowrangeAddressupdate_range(nodeId, sheetId, rangeAddress, values) 完成追加效果只有在明确验证 append_rows 恢复稳定后,才允许恢复直接调用。
nodeId / sheetId -- 必须从工具返回值中提取,不能手写猜测get_range / update_range 只支持在线电子表格,传文档类型会报错range 与 sheetId 的覆盖关系 -- 当 range 自带 sheetId!A1:D10 前缀时,应以 range 里的工作表为准get_all_sheets,必要时再 get_sheetupdate_range.values 维度与 rangeAddress 不一致 -- 行列不匹配会导致写入失败或错位append_rows -- 当前上游服务不稳定;所有追加请求都必须改走 get_sheet + update_range| 方法 | 用途 | 必填参数 | 关键说明 |
|---|---|---|---|
create_workspace_sheet |
创建新的在线表格文件 | name |
可创建到文件夹、知识库根目录或“我的文档” |
create_sheet |
在表格中创建工作表 | nodeId, name |
重名时会自动重命名 |
get_all_sheets |
获取所有工作表 | nodeId |
返回工作表 ID 和名称 |
get_sheet |
获取工作表详情 | nodeId |
sheetId 选填,不传时按服务端默认解析 |
get_range |
读取单元格范围 | nodeId |
sheetId / range 选填;不传 range 时读全部非空数据 |
update_range |
更新指定区域 | nodeId, sheetId, rangeAddress |
可同时写值、超链接、数字格式 |
append_rows |
在工作表末尾追加行 | nodeId, sheetId, values |
当前临时禁用;不要直接调用,改用 get_sheet + update_range |
find_cells |
查找匹配单元格 | nodeId, sheetId, text |
支持正则、公式、忽略大小写、隐藏单元格等模式 |
nodeId 支持两种格式:https://alidocs.dingtalk.com/i/nodes/{dentryUuid}dentryUuidsheetId 可传工作表 ID 或名称;不确定时先调 get_all_sheetsrange 使用 A1 表示法,如 A1:D10range 也可带工作表前缀,如 Sheet1!A1:D10 或 {sheetId}!A1:D10update_range.hyperlinks 中每个单元格可传对象或 nullupdate_range.numberFormat 常见值:General、@、#,##0、#,##0.00、0%、yyyy/m/d用户说“创建一个表格 / 新建报表 / 建个在线表格”:
create_workspace_sheetcreate_sheet用户说“这个表格有哪些工作表 / 列一下 sheet”:
get_all_sheets用户说“看看这个 sheet 有多少行 / 工作表详情 / 最后有数据的行列”:
get_sheet用户说“读取 A1 到 D10 / 导出这个范围 / 看看整张表内容”:
get_rangerange,默认读取目标工作表全部非空数据用户说“把这些数据写到 A1:C5 / 改单元格 / 设置百分比格式”:
update_rangesheetId 和 rangeAddress用户说“在末尾追加几行 / 继续记流水 / 新增一批记录”:
get_sheet 读取 lastNonEmptyRowupdate_range 写入下一段空白区域用户说“找一下包含 XXX 的单元格 / 在公式里搜 / 忽略大小写查找”:
find_cells创建表格并新建工作表:
create_workspace_sheet(name, folderId?, workspaceId?) → 提取 nodeIdcreate_sheet(nodeId, name="汇总") → 提取新增工作表标识get_all_sheets(nodeId) → 回显当前工作表列表读取指定范围:
get_all_sheets(nodeId) → 解析 sheetIdget_range(nodeId, sheetId, range="A1:D10") → 提取 values / formulas / displayValues覆盖写入矩形区域:
get_all_sheets(nodeId) → 确认目标 sheetIdvalues 为二维数组,维度与 rangeAddress 保持一致update_range(nodeId, sheetId, rangeAddress, values, hyperlinks?, numberFormat?)末尾追加数据:
get_all_sheets(nodeId) → 确认目标 sheetIdget_sheet(nodeId, sheetId) → 提取 lastNonEmptyRowrangeAddressupdate_range(nodeId, sheetId, rangeAddress, values) → 提取实际写入范围| 操作 | 从返回中提取 | 用于 |
|---|---|---|
create_workspace_sheet |
nodeId / dentryUuid |
后续所有表格操作 |
get_all_sheets |
sheetId, name |
get_sheet / get_range / update_range / find_cells |
get_sheet |
行列数、最后非空行列 | 判断读取范围或追加策略 |
get_range |
values, displayValues, formulas |
给用户展示数据或导出本地 |
find_cells |
A1 地址列表 | 二次读取、定位或修复数据 |
// [正确] nodeId 可传 URL 或 dentryUuid
{"nodeId": "https://alidocs.dingtalk.com/i/nodes/abc123"}
{"nodeId": "abc123"}
// [正确] rangeAddress 与 values 维度一致
{"rangeAddress": "A1:B2", "values": [["1", "2"], ["3", "4"]]}
// [错误] 2x2 数据写进 1 列范围
{"rangeAddress": "A1:A2", "values": [["1", "2"], ["3", "4"]]}
// [正确] 带工作表前缀的 range
{"range": "Sheet1!A1:D10"}
scripts/ 目录中的辅助脚本会处理工作区内的本地表格文件:
create_sheet.py:创建新的钉钉在线表格,可选追加创建一个工作表import_sheet.py:读取工作区内 .csv / .tsv,创建新表格或写入已有表格export_sheet.py:把钉钉表格指定工作表或范围导出为本地 .csv / .tsv这些脚本都受以下规则约束:
resolve_safe_path() 防止目录遍历mcporter 调用 MCP 服务,不直接发起业务 HTTP 请求Invalid credentials:提示用户重新配置 DINGTALK_MCP_SHEETS_URLPermission denied:提示用户确认目标表格或目标位置权限get_all_sheets,再根据名称或 ID 重试rangeAddress 与 values / hyperlinks 的行列数相关专题
热门下载
相关下载
精品课程
共6课时 | 54.6万人学习
共89课时 | 133.4万人学习
共49课时 | 82.2万人学习