This commit is contained in:
Leo
2026-01-15 16:22:00 +08:00
parent ba1e025326
commit f044417d8d
2 changed files with 303 additions and 0 deletions

View File

@@ -0,0 +1,271 @@
# 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. **数据量限制**:一次读取的数据量不要太大,建议分批读取

View File

@@ -21,6 +21,38 @@
3. 获取 `app_id``app_key`
4. 配置授权回调地址(需要与配置文件中的 `redirect-uri` 一致)
### 1.1 配置应用权限(重要!)
在WPS365开放平台的应用配置中需要确保开启以下权限
#### 基础权限
- **文件读取权限** (`file.read``file.readwrite`)
- **用户信息权限** (`user.info`)
#### 在线表格KSheet相关权限
根据图片中的应用能力配置页面,如果需要读取在线表格内容,建议:
1. **进入"应用能力"配置页面**
- 在左侧导航栏选择"应用能力" > "应用能力"
2. **确保相关能力已开启**
- 虽然图片中显示的是"多维表格"插件相关能力,但读取在线表格内容主要依赖:
- **文件读取权限**(在"权限管理"中配置)
- **API调用权限**确保应用有调用OpenAPI的权限
3. **权限管理配置**
- 进入"开发配置" > "权限管理"
- 确保添加了以下权限:
- `ksheet:read` - 读取在线表格数据
- `ksheet:write` - 写入在线表格数据(如果需要编辑)
- `file:read` - 读取文件
- `file:write` - 写入文件(如果需要编辑)
4. **事件与回调配置**
- 进入"开发配置" > "事件与回调"
- 配置回调地址:`https://your-domain.com/wps365-callback`
- 确保回调地址验证通过支持GET和POST请求
### 2. 更新配置文件
编辑 `application-dev.yml`或对应的环境配置文件添加WPS365配置