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

272 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WPS365 读取在线表格内容配置指南
## 概述
本指南详细说明如何配置WPS365应用以实现读取自己创建的在线表格内容。
## 一、WPS365开放平台配置步骤
### 1. 应用基础配置
1. **登录WPS365开放平台**
- 访问https://open.wps.cn/
- 使用WPS账号登录
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` 中添加配置:
```yaml
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
当前代码中使用的授权范围:
```java
scope=file.readwrite,user.info
```
如果需要更细粒度的权限控制,可以修改为:
```java
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. 获取文件列表
```javascript
// 调用接口获取文件列表
GET /jarvis/wps365/files?userId=xxx&page=1&pageSize=20
```
### 3. 获取工作表列表
```javascript
// 获取指定文件的工作表列表
GET /jarvis/wps365/sheets?userId=xxx&fileToken=xxx
```
### 4. 读取单元格数据
```javascript
// 读取指定范围的单元格数据
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.read``ksheet: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 |
**返回示例:**
```json
{
"code": 200,
"msg": "读取单元格数据成功",
"data": {
"values": [
["列1", "列2", "列3"],
["数据1", "数据2", "数据3"],
["数据4", "数据5", "数据6"]
]
}
}
```
## 六、完整示例
### 前端调用示例
```javascript
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. **数据量限制**:一次读取的数据量不要太大,建议分批读取