1. 06. 石墨前端 API
石墨文档中台-开发文档
  • 1. 适用范围
  • 00. 概述
    • 石墨文档中台能做什么?
    • 三种典型的业务接入场景
    • 石墨文档中台支持哪些格式?
  • 01. 快速开始
    • 基本概念
    • 场景一:10 分钟创建预览文件
    • 场景二:10 分钟创建协同编辑文件
  • 02. 鉴权与安全
    • 整体概述
    • 签名凭证 Token
    • 签名凭证 Signature
  • 03. 文件预览
    • 整体概述
    • 如何预热预览缓存
    • 如何防盗链
    • 常见问题处理
  • 04. 文件编辑
    • 整体概述
    • 协同文档权限设计
    • 协同文件保存与更新机制
    • 协同文件复制与删除
  • 05. 文件导入导出
    • 整体概述
    • 常见问题处理
  • 06. 石墨前端 API
    • 整体概述
    • 公共 API
      • 公共处理方法
      • 顶部栏定制 HeaderBars
    • 编辑器 API
      • 轻文档
      • 传统文档
      • 表格
      • 幻灯片
      • 表单
      • 应用表格
  • 07. 石墨后端 API
    • 整体概述
    • 错误码说明
    • 文件-预览 API
      • 访问预览文件
      • 创建文件预览缓存
    • 文件-协同编辑文件管理 API
      • 访问协同编辑文件
      • 创建协同文件
      • 创建协同文件副本
      • 删除协同文件
    • 文件-导入导出 API
      • 文件导入
        • 文件导入说明
        • 创建导入任务
        • 获取导入进度
        • 创建导入任务(旧版)
        • 获取导入进度(旧版)
      • 文件导出
        • 文件导出流程
        • 创建导出任务
        • 获取导出进度
    • 文件-表格文件(Excel) API
      • 表格接口参数说明
      • 获取表格内容
      • 获取表格中的评论数
      • 更新表格内容
      • 追加表格内容
      • 删除表格行
      • 新增表格工作表
    • 文件-文稿文件(Word) API
      • 文稿书签说明
      • 读取文稿书签内容
      • 替换文稿书签内容
    • 文件-文档文件(类 Markdown) API
      • 获取文档中的评论列表
    • 文件-应用表格文件(多维表格)API
      • 应用表格列及单元格值结构
      • 应用表格接口调用规则
      • 获取数据表列表
      • 创建数据表
      • 获取字段列表
      • 创建字段
      • 更新字段
      • 删除字段
      • 新增行
      • 获取单行
      • 更新行
      • 删除行
    • 文件-获取额外信息 API
      • 获取文件的纯文本内容
      • 文件纯文本字数统计
      • 获取文件的历史列表
      • 获取文件的版本列表
      • 获取文件内容中所有的 @ 人信息列表
      • 还原文件历史版本
    • 系统管理 API
      • 应用管理
        • 获取应用详情
        • 更新应用回调地址
      • 用户席位管理
        • 用户席位状态说明
        • 获取用户列表和席位状态
        • 激活用户席位​
        • 取消用户席位​
        • 批量设置用户席位
    • 其他 API
      • 上报事件
      • 创建行为历史
      • 推送文件内全部的用户
      • 推送用户全部的 websocket 连接
    • 获取行列表
  • 08. 回调接口(你的应用需实现的接口)
    • 整体概述
    • 文件信息
      • 文件权限说明
      • [重要] 获取文件元信息-协同文档
      • [重要] 获取文件元信息-预览文档
      • 获取当前用户的文件列表
      • 获取文件的协作者列表
      • 获取接入方指定文件的完整访问地址
      • 获取文件元信息-协同文档自动任务(admin)
      • 根据指定用户获取文件元信息-协同文档(admin)
    • 用户信息
      • 批量获取用户信息(admin)
      • [重要] 获取当前用户信息
      • 获取当前用户所在团队信息
      • 获取指定用户信息
      • 获取用户水印信息
      • 获取用户部门路径
      • 批量获取用户信息
    • 团队和部门
      • 特殊部门 ID 说明
      • 获取团队下的成员列表
      • 获取部门信息
      • 获取部门的下级部门节点
      • 获取部门下的成员分页列表
    • 搜索功能
      • 获取与文件相关的用户列表
      • 获取与文件相关的文件列表
      • 按关键字搜索文件和用户列表
    • 事件推送
      • 整体概述
      • 评论(Comment)
        • 轻文档
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 表格
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 传统文档
          • 对于评论的回复评论
          • 添加评论
          • 更新评论
          • 删除评论
        • 幻灯片
          • 添加评论
          • 删除评论
          • 结束评论
          • 对于评论的回复评论
        • 应用表格
          • 添加评论
          • 对于评论的回复评论
          • 删除评论
      • 讨论(Discussion)
        • 轻文档
          • 发送讨论消息
      • 提及(MentionAt @ 人)
        • 轻文档
          • 在评论中 at
          • 在讨论中 at
          • 在正文中 at
        • 表格
          • 在评论中 at
          • 在正文中 at
        • 传统文档
          • 在评论中 at
          • 在正文中 at
        • 应用表格
          • 在评论中 at
          • 在正文中 at
      • 日期提醒 (DateMention)
        • 轻文档
          • 创建
          • 修改
          • 删除
        • 表格
          • 创建
          • 修改
          • 删除
        • 传统文档
          • 创建
          • 修改
          • 删除
      • 文件内容更新 (FileContent)
        • 文件内容更新
      • 文档协作者协同状态变化 (Collaborator)
        • 文档协作者协同状态变化
      • 文件版本 (Revision)
        • 版本
      • 系统事件 (System)
        • 系统事件
      • 回调请求错误(实验性)
        • 回调请求错误
  • 09. 核心模型
    • 你的应用如何设计应用(app)模型?
    • 你的应用如何设计文件数据模型?
    • 你的应用如何设计通讯录模型?
    • 你的应用系统如何设计文件权限模型?
  • 10. 典型场景方案
    • 云盘场景
    • IM 场景
    • 示例代码仓库
  • 11. 常见问题
    • 访问接口提示 Signature
    • 文件预览或导入报错
    • 首次接入 SDK 报错
    • 文档预览如何做防盗链
    • 复制粘贴、全屏操作不正常
    • 如何实现文档模板功能
    • 文档内容何时保存
    • 移动端不支持 blob 协议导致预览失败
    • 如何实现文件重命名
    • 如何通过接口修改文档内容
    • @人员时如何直接跳转至对应锚点
  1. 06. 石墨前端 API

整体概述

概述#

石墨 JS SDK 的接入可以分成两层理解:
OfficeSDK:负责连接、生命周期、通用能力入口
Editor API:负责文档、表格、演示文稿等具体编辑能力
调用 connect(options) 成功后会返回一个 OfficeSDK 实例:
后续接入方看到的 API,主要分为两类:
公共 API:挂在 OfficeSDK 实例本身上,不依赖具体编辑器套件
编辑器 API:依赖当前文件类型,只在对应套件下可用

安装与基本用法#

安装#

npm 包方式#

script 方式#

1.
使用 npm view 和 npm pack 下载代码包。
2.
将 .tgz 解压后 dist 目录中的文件部署到您的静态资源空间。
3.
通过 <script> 引入 index.js,再从 window.ShimoJSSDK 获取对应方法。

使用示例#

调用 connect() 时,会基于传入参数初始化一个 <iframe> 并插入到 container 对应的元素中。

公共 API#

公共 API 表示“无论当前接入的是哪一种套件,都可以从 OfficeSDK 实例上统一访问”的能力。
这类能力主要用于初始化、等待就绪、读取文件类型、监听通用事件、获取编辑器实例,以及在宿主侧管理连接生命周期。
公共方法的详细说明请查看 公共处理方法。

编辑器 API#

含义#

编辑器 API 表示“只有在某一类编辑器套件下才成立”的能力。
例如:
轻文档有标题、评论、目录、正文选区等能力
表格有工作表、单元格、锁定、图表等能力
演示文稿有幻灯片、演示模式、缩放、文本范围等能力
这类 API 必须结合当前套件类型使用,不能假设所有文件类型都支持同一组方法。

两种入口#

当前项目里,编辑器 API 有两种主要访问方式:
1.
旧入口:sdk.getEditor()
2.
新入口:根级 API

旧入口:sdk.getEditor()#

这是历史兼容方式。它返回当前套件对应的编辑器实例,再通过实例方法调用具体能力。
特点:
兼容历史接入代码
方法名多为扁平风格
不同套件下返回的 editor 类型不同

新入口:根级 API#

这是当前文档推荐的写法。对应能力直接挂在 OfficeSDK 实例上,按模块分组访问。
特点:
调用路径更清晰
更适合按能力模块组织文档
方便在同一入口下统一迁移和扩展

两者关系#

公共 API 和编辑器 API 不是互斥关系,而是两层能力:
先通过 公共 API 建立连接、判断类型、等待 ready
再通过 编辑器 API 调用当前套件支持的具体能力
常见调用顺序如下:
或者继续使用兼容写法:

如何选择#

优先在这些场景使用公共 API:
初始化 SDK
等待就绪
获取文件类型
监听错误、readyState 等通用事件
管理 HeaderBars
当你要操作具体内容或具体套件能力时,使用编辑器 API:
文档标题、评论、目录、正文选区
表格历史、锁定、工作表、单元格、图表
演示文稿历史、演示模式、幻灯片、缩放、文本格式
入口选择建议:
新增接入代码:优先使用根级 API
维护历史代码:可以继续使用 sdk.getEditor()
更新文档时:保留旧入口兼容说明,同时补充新的 API 写法

URL 处理#

由于石墨 SDK 以 iframe 形式挂载到当前页面,iframe.src 对应的 URL 通常不适合直接用于分享。在一些功能中,比如 @ 文件、评论定位、表单分享,还需要使用接入方系统中的 URL 规则,例如 https://your-domain/files/:id。
为了解决这个问题,SDK 提供了 generateUrl()、openLink() 和 getFileInfoFromUrl() 等能力。

URL 的上下文信息#

为了在 URL 中传递上下文信息,比如段落、单元格、评论定位等,调用 generateUrl() 后,SDK 会在 URL 上附加 smParams=PARAMS 参数:
https://your-domain/files/:id?smParams=PARAMS
如无特殊需要,请保留该参数。
默认情况下,调用 connect() 时会从当前 location.search 中提取 smParams。如果需要自定义上下文参数,可以通过 connect({ smParams }) 手动传入。
smParams 是经过 base62 序列化后的 Record<string, unknown> 对象。
手动传入 smParams 后,SDK 不会再自动从 location.search 读取原始值。如果希望保留已有上下文,可以这样合并:

URL Info#

generateUrl(fileId, info) 中的 info 用于对 URL 做特殊处理。
sharingText 表示石墨默认提供的分享文本,例如:
https://your-domain/files/1 xxx 邀请您参与《标题》协作,请复制粘贴后在浏览器打开
https://your-domain/files/1/fill-form xxx 邀请您填写《标题》表单,……
sharingType 表示当前 URL 对应的行为类型,例如:
UrlSharingType.Form:打开编辑表单
UrlSharingType.FormPreview:打开预览表单
UrlSharingType.FormFill:打开填写表单
接入时通常需要根据 sharingType 生成不同 URL:
UrlSharingType.Form、UrlSharingType.FormPreview 一般需要鉴权,可使用 /files/${fileId}
UrlSharingType.FormFill 一般不需要登录鉴权,可使用 /files/${fileId}/fill-form
如果为 URL 拼接了 sharingText,则需要在您的 parseUrl() 中先把真实链接解析出来,例如:

典型场景#

打开表格指定工作表#

这个场景适用于一个表格存在多个工作表时,希望打开编辑器后直接展示指定工作表,而不是默认第一个工作表。
可以先通过表格编辑器接口 getActiveSheetId 获取当前激活工作表 ID,再把它作为业务 URL 参数透传回来,例如:
https://your-domain.com/files/abcdefg?sheetId=XXXXX&smParams=XXXXXXXXXXXXXXXXXXXXXX
接入示例:

定位文中位置#

这个场景适用于打开编辑器后,直接定位到正文中的 @用户 位置或评论位置。
当前支持的文档类型:
轻文档 - document
表格 - spreadsheet
传统文档 - documentPro
例如:
在回调事件中收到 mention_at,可取 mentionAt.guid 拼接到您的业务链接上
在回调事件中收到 comment,可取 comment.selectionGuid 拼接到您的业务链接上
URL 示例:
https://your-domain.com/files/abcdefg?mentionId=XXXXX&smParams=XXXXXXXXXXXXXXXXXXXXXX
接入示例:

支持的文档类型#

类型说明编辑器 API
Document轻文档轻文档
DocumentPro传统文档传统文档
Spreadsheet表格表格
Presentation幻灯片演示文稿
Table应用表格简单表格
Form表单表单
Flowchart流程图流程图

文档入口#

如需继续查看不同层级的说明,可结合以下页面:
概述
公共处理方法
快速开始
HeaderBars
轻文档
传统文档
表格
简单表格
演示文稿
流程图
表单
修改于 2026-06-22 02:43:30
上一页
常见问题处理
下一页
公共处理方法
Built with