Files
ruoyi-java/doc/WPS365读取在线表格配置指南.md
2026-01-15 16:22:00 +08:00

7.2 KiB
Raw Permalink Blame History

WPS365 读取在线表格内容配置指南

概述

本指南详细说明如何配置WPS365应用以实现读取自己创建的在线表格内容。

一、WPS365开放平台配置步骤

1. 应用基础配置

  1. 登录WPS365开放平台

  2. 创建应用

    • 进入"应用管理"
    • 点击"创建应用"
    • 填写应用名称Jarvis同步WPS
    • 选择应用类型:服务端应用
  3. 获取应用凭证

    • 记录 AppID应用ID
    • 记录 AppKey(应用密钥,注意保密)

2. 配置回调地址

  1. 进入"开发配置" > "事件与回调"
  2. 配置回调地址
    • 回调地址:https://jarvis.van333.cn/wps365-callback
    • 点击"验证"按钮,确保验证通过
    • 如果验证失败,检查:
      • 回调接口是否支持GET和POST请求
      • 是否能正确处理challenge参数
      • 前端白名单是否已配置

3. 配置权限(关键步骤)

3.1 进入权限管理

  1. 在左侧导航栏选择 "开发配置" > "权限管理"
  2. 查看当前应用的权限列表

3.2 添加必要权限

需要添加以下权限才能读取在线表格内容:

基础权限:

  • file.read - 读取文件权限
  • file.readwrite - 读取和写入文件权限如果只需要读取可以只选read
  • user.info - 获取用户信息权限

在线表格KSheet权限

  • ksheet:read - 读取在线表格数据
  • ksheet:write - 写入在线表格数据(如果需要编辑功能)

权限说明:

  • 这些权限决定了你的应用能访问哪些资源
  • 用户授权时,会看到这些权限的说明
  • 只有用户同意授权后,应用才能访问对应的资源

3.3 权限申请流程

  1. 在权限管理页面,点击"添加权限"
  2. 搜索并选择上述权限
  3. 提交权限申请(部分权限可能需要审核)
  4. 等待审核通过

4. 应用能力配置(可选)

根据图片显示WPS365开放平台提供了多种应用能力

协作与会话:

  • WPS协作机器人
  • 工作台小组件
  • WPS协作网页应用

多维表格:

  • 记录卡片插件
  • 字段插件
  • 视图插件
  • 仪表盘插件
  • 数据连接器插件
  • 自动化插件

注意:

  • 如果只是读取在线表格内容,通常不需要开启这些插件能力
  • 这些能力主要用于扩展表格功能,不是读取数据的必要条件
  • 读取数据主要依赖API权限而不是这些插件能力

二、后端配置

1. 更新配置文件

application-dev.yml 中添加配置:

wps365:
  # 应用ID从WPS365开放平台获取
  app-id: YOUR_APP_ID
  # 应用密钥从WPS365开放平台获取
  app-key: YOUR_APP_KEY
  # 授权回调地址
  redirect-uri: https://jarvis.van333.cn/wps365-callback
  # API基础地址
  api-base-url: https://open.wps.cn/api/v1
  # OAuth授权地址
  oauth-url: https://open.wps.cn/oauth2/v1/authorize
  # 获取Token地址
  token-url: https://open.wps.cn/oauth2/v1/token
  # 刷新Token地址
  refresh-token-url: https://open.wps.cn/oauth2/v1/token

2. 确认授权范围Scope

当前代码中使用的授权范围:

scope=file.readwrite,user.info

如果需要更细粒度的权限控制,可以修改为:

scope=file.read,ksheet:read,user.info  // 只读权限
// 或
scope=file.readwrite,ksheet:readwrite,user.info  // 读写权限

三、使用流程

1. 用户授权

  1. 调用 /jarvis/wps365/authUrl 获取授权URL
  2. 用户访问授权URL同意授权
  3. WPS365回调到 /wps365-callback自动保存Token

2. 获取文件列表

// 调用接口获取文件列表
GET /jarvis/wps365/files?userId=xxx&page=1&pageSize=20

3. 获取工作表列表

// 获取指定文件的工作表列表
GET /jarvis/wps365/sheets?userId=xxx&fileToken=xxx

4. 读取单元格数据

// 读取指定范围的单元格数据
GET /jarvis/wps365/readCells?userId=xxx&fileToken=xxx&sheetIdx=0&range=A1:Z100

参数说明:

  • userId: 用户ID授权后获取
  • fileToken: 文件Token从文件列表中获取
  • sheetIdx: 工作表索引从0开始
  • range: 单元格范围A1:Z100可选不填则读取整个工作表

四、常见问题

Q1: 提示"权限不足"或"无权限访问"

解决方案:

  1. 检查WPS365开放平台的权限配置
  2. 确认已添加 file.readksheet:read 权限
  3. 重新授权删除旧Token重新获取授权

Q2: 无法读取自己创建的表格

可能原因:

  1. 文件Token不正确
  2. 工作表索引错误
  3. 用户对文件没有读取权限(即使是自己创建的,也需要授权给应用)

解决方案:

  1. 确认文件Token是从文件列表中正确获取的
  2. 使用 /jarvis/wps365/sheets 接口确认工作表索引
  3. 确保用户已授权应用访问该文件

Q3: 读取返回空数据

可能原因:

  1. 指定的单元格范围没有数据
  2. 工作表索引错误
  3. API返回格式与预期不符

解决方案:

  1. 尝试读取更大的范围A1:Z1000
  2. 检查工作表索引是否正确
  3. 查看后端日志确认API返回的具体内容

五、API接口说明

读取单元格数据接口

接口地址: GET /jarvis/wps365/readCells

请求参数:

参数 类型 必填 说明
userId String 用户ID
fileToken String 文件Token
sheetIdx Integer 工作表索引默认0
range String 单元格范围A1:B10

返回示例:

{
  "code": 200,
  "msg": "读取单元格数据成功",
  "data": {
    "values": [
      ["列1", "列2", "列3"],
      ["数据1", "数据2", "数据3"],
      ["数据4", "数据5", "数据6"]
    ]
  }
}

六、完整示例

前端调用示例

import { 
  getWPS365AuthUrl, 
  getWPS365FileList,
  getWPS365SheetList,
  readWPS365Cells 
} from '@/api/jarvis/wps365'

// 1. 获取授权URL
const authResponse = await getWPS365AuthUrl()
window.open(authResponse.data, '_blank')

// 2. 等待授权完成后,获取文件列表
const fileListResponse = await getWPS365FileList({
  userId: 'your_user_id',
  page: 1,
  pageSize: 20
})

// 3. 选择要读取的文件,获取工作表列表
const fileToken = fileListResponse.data.files[0].file_token
const sheetListResponse = await getWPS365SheetList('your_user_id', fileToken)

// 4. 读取第一个工作表的数据
const dataResponse = await readWPS365Cells({
  userId: 'your_user_id',
  fileToken: fileToken,
  sheetIdx: 0,
  range: 'A1:Z100'
})

console.log('表格数据:', dataResponse.data.values)

七、注意事项

  1. 权限范围确保在WPS365开放平台配置了正确的权限
  2. 文件Token使用fileToken而不是fileId来访问文件
  3. 工作表索引工作表索引从0开始不是从1开始
  4. 单元格范围:范围格式为 A1:B10,不区分大小写
  5. Token有效期Token会过期需要定期刷新或重新授权
  6. 数据量限制:一次读取的数据量不要太大,建议分批读取