|
|
发表于 2026-3-16 08:39:28
|
显示全部楼层
山西省晋城市
我完全理解你的困惑,WPS开放平台的文档对新手确实不够友好。我会用最通俗易懂的方式,带你实现通过POST请求对WPS在线云表格进行**增删改查**操作,并且提供可以直接运行的代码示例。
### 前置准备
在开始写代码前,请先确认你已经获取到以下关键信息(这些都在WPS开放平台控制台中):
1. **AppID** 和 **AppSecret**:应用的身份凭证
2. **表格的 fileid**:云表格的唯一标识(可通过分享链接或API获取)
3. **表格的 access_token**:访问令牌(需要用AppID和AppSecret获取)
### 核心实现思路
1. 先通过AppID和AppSecret获取访问令牌(access_token)
2. 使用access_token + fileid 调用对应的API接口
3. 用POST请求实现不同的操作(查询/新增/修改/删除)
### 完整代码示例(Python版)
下面是完整的可运行代码,我用Python的`requests`库实现,这是最常用也最容易理解的方式。
```python
import requests
import json
# ====================== 配置信息(请替换成你自己的) ======================
APP_ID = "你的AppID"
APP_SECRET = "你的AppSecret"
FILE_ID = "你的表格fileid"
# =========================================================================
# 1. 获取访问令牌 access_token
def get_access_token():
"""获取WPS开放平台的访问令牌"""
url = "https://openapi.wps.cn/oauth2/access_token"
params = {
"grant_type": "client_credentials",
"appid": APP_ID,
"secret": APP_SECRET
}
try:
response = requests.post(url, params=params)
result = response.json()
if "access_token" in result:
return result["access_token"]
else:
print("获取token失败:", result)
return None
except Exception as e:
print("获取token异常:", str(e))
return None
# 2. 读取表格数据(查)
def query_table_data(access_token, sheet_name="Sheet1", range_str="A1:C10"):
"""
读取表格指定范围的数据
:param access_token: 访问令牌
:param sheet_name: 工作表名称(默认Sheet1)
:param range_str: 读取范围(默认A1:C10)
"""
url = f"https://openapi.wps.cn/office/v1/files/{FILE_ID}/sheets/{sheet_name}/values/{range_str}"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
try:
response = requests.get(url, headers=headers) # 读取用GET请求
result = response.json()
print("查询到的数据:", result)
return result
except Exception as e:
print("查询数据失败:", str(e))
return None
# 3. 写入/新增数据(增/改)
def write_table_data(access_token, sheet_name="Sheet1", range_str="A1", values=None):
"""
向表格写入数据(新增/修改)
:param access_token: 访问令牌
:param sheet_name: 工作表名称
:param range_str: 写入起始位置
:param values: 要写入的数据,格式如 [["姓名", "年龄"], ["张三", 25]]
"""
if values is None:
values = [["姓名", "年龄"], ["张三", 25], ["李四", 30]]
url = f"https://openapi.wps.cn/office/v1/files/{FILE_ID}/sheets/{sheet_name}/values/{range_str}"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
data = {
"valueOption": "RAW", # RAW表示原样写入,不解析公式
"values": values
}
try:
# 写入用POST请求
response = requests.post(url, headers=headers, data=json.dumps(data))
result = response.json()
print("写入数据结果:", result)
return result
except Exception as e:
print("写入数据失败:", str(e))
return None
# 4. 清空数据(删)
def clear_table_data(access_token, sheet_name="Sheet1", range_str="A1:C100"):
"""
清空表格指定范围的数据
:param access_token: 访问令牌
:param sheet_name: 工作表名称
:param range_str: 要清空的范围
"""
url = f"https://openapi.wps.cn/office/v1/files/{FILE_ID}/sheets/{sheet_name}/values/{range_str}/clear"
headers = {
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json"
}
try:
response = requests.post(url, headers=headers) # 清空用POST请求
result = response.json()
print("清空数据结果:", result)
return result
except Exception as e:
print("清空数据失败:", str(e))
return None
# 主函数:演示完整流程
if __name__ == "__main__":
# 第一步:获取token
token = get_access_token()
if not token:
exit("无法获取access_token,请检查AppID和AppSecret")
# 第二步:写入数据(增/改)
write_table_data(token)
# 第三步:查询数据(查)
query_table_data(token)
# 第四步:清空数据(删)
# clear_table_data(token) # 取消注释即可执行清空操作
```
### 代码使用说明
1. **安装依赖**:先执行以下命令安装requests库
```bash
pip install requests
```
2. **替换配置**:将代码中`APP_ID`、`APP_SECRET`、`FILE_ID`替换成你自己的信息
3. **运行代码**:直接执行这个Python文件即可看到效果
### 关键接口说明
| 操作 | 请求方式 | 核心接口 | 说明 |
|------|----------|----------|------|
| 查询 | GET | `/office/v1/files/{fileid}/sheets/{sheet}/values/{range}` | 读取指定范围数据 |
| 写入 | POST | `/office/v1/files/{fileid}/sheets/{sheet}/values/{range}` | 新增/修改数据 |
| 删除 | POST | `/office/v1/files/{fileid}/sheets/{sheet}/values/{range}/clear` | 清空指定范围数据 |
### 常见问题解决
1. **token失效**:access_token有有效期(通常2小时),建议每次请求前重新获取
2. **权限不足**:确认你的应用已授权访问该表格,且企业认证已完成
3. **fileid错误**:fileid可通过WPS云文档的分享链接提取,或调用`/files/list`接口获取
4. **范围格式错误**:range_str格式必须是`A1`、`A1:C10`这种Excel格式
### 总结
1. **核心流程**:先通过AppID/AppSecret获取`access_token`,再用`access_token + fileid`调用API实现增删改查。
2. **请求方式**:查询用GET,新增/修改/删除用POST,核心区别在于请求体和接口路径。
3. **关键配置**:必须替换成自己的AppID、AppSecret和fileid,否则代码无法运行。
如果运行过程中遇到具体的错误提示(比如401/403/500),可以把错误信息发给我,我帮你定位问题。
|
|