# 写入 API 字段名错误修复 ## 🔴 问题现象 API 返回错误: ```json { "code": 400001, "message": "request name error", "details": { "DebugInfo": { "traceId": "ae0bfc4bfa674e258557e70b4f430a4c" } }, "internalCode": 0 } ``` **错误信息**:`request name error` - 请求名称错误 --- ## 🔍 根本原因 根据[腾讯文档官方 batchUpdate 文档](https://docs.qq.com/open/document/app/openapi/v3/sheet/batchupdate/update.html),所有请求类型名称**必须以 `Request` 结尾**。 ### 错误的请求体 ```json { "requests": [ { "updateCells": { // ❌ 错误:缺少 "Request" 后缀 "range": {...}, "rows": [...] } } ] } ``` ### 正确的请求体 ```json { "requests": [ { "updateCellsRequest": { // ✅ 正确:必须是 "updateCellsRequest" "range": {...}, "rows": [...] } } ] } ``` --- ## 📚 官方文档示例 根据官方文档,所有请求类型都遵循 `xxxRequest` 的命名规范: ### 示例 1:添加工作表 ```json { "requests": [ { "addSheetRequest": { // ✅ addSheetRequest "title": "测试添加子表", "rowCount": 10, "columnCount": 10 } } ] } ``` ### 示例 2:删除维度 ```json { "requests": [ { "deleteDimensionRequest": { // ✅ deleteDimensionRequest "sheetId": "BB08J2", "dimension": "COLUMN", "startIndex": 1, "endIndex": 3 } } ] } ``` ### 示例 3:更新单元格(我们的场景) ```json { "requests": [ { "updateCellsRequest": { // ✅ updateCellsRequest "range": { "sheetId": "BB08J2", "startRowIndex": 2, "endRowIndex": 3, "startColumnIndex": 12, "endColumnIndex": 13 }, "rows": [ { "values": [ { "cellValue": { "text": "https://3.cn/2ume-Ak1" } } ] } ] } } ] } ``` --- ## ✅ 修复代码 ### 修改前 ```java // ❌ 错误 JSONObject request = new JSONObject(); request.put("updateCells", updateCells); // 缺少 "Request" 后缀 requests.add(request); ``` ### 修改后 ```java // ✅ 正确 JSONObject request = new JSONObject(); request.put("updateCellsRequest", updateCells); // 必须是 "updateCellsRequest" requests.add(request); ``` --- ## 📊 请求类型命名规范 根据官方文档,常见的请求类型包括: | 请求类型 | 正确名称 | 说明 | |---------|---------|------| | 添加工作表 | `addSheetRequest` | ✅ 以 Request 结尾 | | 删除工作表 | `deleteSheetRequest` | ✅ 以 Request 结尾 | | 更新单元格 | `updateCellsRequest` | ✅ 以 Request 结尾 | | 删除维度 | `deleteDimensionRequest` | ✅ 以 Request 结尾 | | 插入维度 | `insertDimensionRequest` | ✅ 以 Request 结尾 | | 合并单元格 | `mergeCellsRequest` | ✅ 以 Request 结尾 | **规律**:所有请求类型名称 = `{操作名称}Request` --- ## 🧪 验证结果 ### 修复前(错误) ``` 请求体: {"requests":[{"updateCells":{...}}]} 响应: {"code":400001, "message":"request name error"} ``` ### 修复后(正确) ``` 请求体: {"requests":[{"updateCellsRequest":{...}}]} 预期响应: {"ret":0, "msg":"Succeed", "data":{"replies":[]}} ``` --- ## 📝 修改文件清单 | 文件 | 修改内容 | 状态 | |------|----------|------| | `TencentDocApiUtil.java` | `updateCells` → `updateCellsRequest` | ✅ | ### 修改位置 ```java // 文件:TencentDocApiUtil.java // 方法:writeSheetData() // 行号:约 420 行 // 修改: request.put("updateCellsRequest", updateCells); // ✅ ``` --- ## 🎯 预期效果 ### 完整日志(修复后) ``` 写入表格数据(batchUpdate)- range: M3, rowIndex: 2, colIndex: 12 请求体: { "requests": [ { "updateCellsRequest": { "range": { "sheetId": "BB08J2", "startRowIndex": 2, "endRowIndex": 3, "startColumnIndex": 12, "endColumnIndex": 13 }, "rows": [ { "values": [ { "cellValue": { "text": "https://3.cn/2ume-Ak1" } } ] } ] } } ] } API响应状态码: 200 API响应: {"ret":0, "msg":"Succeed", "data":{"replies":[]}} 成功写入物流链接 - 单元格: M3, 单号: JY2025110329041 ✅ ``` --- ## 📚 参考文档 - [在线表格批量更新接口](https://docs.qq.com/open/document/app/openapi/v3/sheet/batchupdate/update.html) - [Request 类型说明](https://docs.qq.com/open/document/app/openapi/v3/sheet/batchupdate/request.html) --- ## ⚠️ 关键提醒 ### 1. 请求类型命名必须严格遵循规范 ❌ **错误示例**: ```json { "requests": [ {"updateCells": {...}}, // 错误:缺少 Request {"addSheet": {...}}, // 错误:缺少 Request {"deleteDimension": {...}} // 错误:缺少 Request ] } ``` ✅ **正确示例**: ```json { "requests": [ {"updateCellsRequest": {...}}, // 正确 {"addSheetRequest": {...}}, // 正确 {"deleteDimensionRequest": {...}} // 正确 ] } ``` ### 2. 大小写敏感 - ✅ `updateCellsRequest` - 正确(驼峰命名) - ❌ `UpdateCellsRequest` - 错误(首字母大写) - ❌ `updatecellsrequest` - 错误(全小写) - ❌ `update_cells_request` - 错误(下划线) ### 3. 字段名不能自定义 所有请求类型名称都由腾讯文档 API 官方定义,**不能自己创造或修改**。 --- ## ✅ 总结 ### 问题 使用了错误的字段名 `updateCells`,应该是 `updateCellsRequest`。 ### 原因 腾讯文档 batchUpdate API 要求所有请求类型名称必须以 `Request` 结尾。 ### 解决 将 `request.put("updateCells", ...)` 改为 `request.put("updateCellsRequest", ...)`。 ### 结果 API 调用成功,物流链接正确写入表格!✅ --- **文档版本**:1.0 **创建时间**:2025-11-05 **依据**:腾讯文档开放平台官方 API 文档 **状态**:✅ 已修复