272 lines
7.2 KiB
Markdown
272 lines
7.2 KiB
Markdown
# 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. **数据量限制**:一次读取的数据量不要太大,建议分批读取
|
||
|