# 替换单元格

在指定范围内，查找并替换符合查找条件的单元格。

## 使用限制

单次最多可替换 5,000 个单元格。

## 请求

基本 | &nbsp;
---|---
HTTP URL | https://open.feishu.cn/open-apis/sheets/v3/spreadsheets/:spreadsheet_token/sheets/:sheet_id/replace
HTTP Method | POST
接口频率限制 | [20 次/分钟](https://open.feishu.cn/document/ukTMukTMukTM/uUzN04SN3QjL1cDN)
支持的应用类型 | Custom App、Store App
权限要求<br>**调用该 API 所需的权限。开启其中任意一项权限即可调用**<br>开启任一权限即可 | 查看、评论、编辑和管理云空间中所有文件(drive:drive)<br>查看、评论、编辑和管理电子表格(sheets:spreadsheet)

### 请求头

名称 | 类型 | 必填 | 描述
---|---|---|---
Authorization | string | 是 | `tenant_access_token`<br>或<br>`user_access_token`<br>**值格式**："Bearer `access_token`"<br>**示例值**："Bearer u-7f1bcd13fc57d46bac21793a18e560"<br>[了解更多：如何选择与获取 access token](https://open.feishu.cn/document/uAjLw4CM/ugTN1YjL4UTN24CO1UjN/trouble-shooting/how-to-choose-which-type-of-token-to-use)
Content-Type | string | 是 | **固定值**："application/json; charset=utf-8"

### 路径参数

名称 | 类型 | 描述
---|---|---
spreadsheet_token | string | 电子表格的 token。可通过以下两种方式获取。了解更多，参考[电子表格概述](https://open.feishu.cn/document/ukTMukTMukTM/uATMzUjLwEzM14CMxMTN/overview)。<br>- 电子表格的 URL：https://sample.feishu.cn/sheets/==Iow7sNNEphp3WbtnbCscPqabcef==<br>- 调用[获取文件夹中的文件清单](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/file/list)<br>**示例值**："Iow7sNNEphp3WbtnbCscPqabcef"
sheet_id | string | 工作表的 ID，获取方式见[获取工作表](https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/sheets-v3/spreadsheet-sheet/query)。<br>**示例值**："PNIfrm"

### 请求体

名称 | 类型 | 必填 | 描述
---|---|---|---
find_condition | find_condition | 是 | 指定查找单元格的条件。
range | string | 是 | 查找范围。格式为 `<sheetId>!<开始位置>:<结束位置>`。其中：<br>- `sheetId` 为工作表 ID，通过[获取工作表](https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/sheets-v3/spreadsheet-sheet/query) 获取<br>- `<开始位置>:<结束位置>` 为工作表中单元格的范围，数字表示行索引，字母表示列索引。如 `A2:B2` 表示该工作表第 2 行的 A 列到 B 列。`range`支持四种写法，详情参考[电子表格概述](https://open.feishu.cn/document/ukTMukTMukTM/uATMzUjLwEzM14CMxMTN/overview)<br>**示例值**："PNIfrm!A1:C5"
match_case | boolean | 否 | 是否忽略查找字符串的大小写，默认为 false。<br>- `true`：忽略字符串中字母大小写差异<br>- `false`：区分字符串中字母大小写<br>**示例值**：true
match_entire_cell | boolean | 否 | 字符串是否需要完全匹配整个单元格，默认值为 false。<br>- `true`：完全匹配单元格，比如 `find` 参数 取值为 "hello"，则单元格中的内容必须为 "hello" 才会匹配替换<br>- `false`：允许部分匹配单元格，比如 `find` 取值为 "hello"，则单元格中的内容包含 "hello" 即可匹配替换<br>**示例值**：false
search_by_regex | boolean | 否 | 是否使用正则表达式查找，默认值为 false。<br>- `true`：使用正则表达式<br>- `false`：不使用正则表达式<br>**示例值**：false
include_formulas | boolean | 否 | 是否仅搜索单元格公式，默认值为 false。<br>- `true`：仅搜索单元格公式<br>- `false`：仅搜索单元格内容<br>**示例值**：false
find | string | 是 | 查找的字符串。当`search_by_regex` 字段为 true 时，你需填入正则表达式。<br>**示例值**："hello"
replacement | string | 是 | 替换的字符串<br>**示例值**："world"

### 请求体示例
```json
{
    "find_condition": {
        "range": "PNIfrm!A1:C5",
        "match_case": true,
        "match_entire_cell": false,
        "search_by_regex": false,
        "include_formulas": false
    },
    "find": "hello",
    "replacement": "world"
}
```

## 响应

### 响应体

名称 | 类型 | 描述
---|---|---
code | int | 错误码，非 0 表示失败
msg | string | 错误描述
data | \- | \-
replace_result | find_replace_result | 符合查找条件并替换的单元格信息
matched_cells | string\[\] | 符合查找条件的单元格数组，不包含公式，例如 ["A1", "A2"...]。
matched_formula_cells | string\[\] | 符合查找条件的含有公式的单元格数组，例如 ["B3", "H7"...]。
rows_count | int | 符合查找条件的总行数

### 响应体示例
```json
{
    "code": 0,
    "msg": "success",
    "data": {
        "replace_result": {
            "matched_cells": [
                "A1"
            ],
            "matched_formula_cells": [
                "B3"
            ],
            "rows_count": 2
        }
    }
}
```

### 错误码

HTTP状态码 | 错误码 | 描述 | 排查建议
---|---|---|---
400 | 1310242 | In Mix state | 当前表格数据位于用户机房，正在将数据恢复到 SaaS 环境中，请稍后重试
400 | 1310211 | Wrong Sheet Id | 检查工作表的 ID 是否正确。获取方式见[获取工作表](https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/sheets-v3/spreadsheet-sheet/query)
400 | 1310248 | Wrong Regular Expression | 检查正则表达式是否正确
400 | 1310202 | Wrong Range | 区域范围错误
400 | 1310229 | Wrong URL Param | 检查 URL 参数
400 | 1310204 | Wrong Request Body | 参考响应体中的错误提示检查请求体参数
400 | 1310213 | Permission Fail | 没有文档相应权限。参考[云文档常见问题](https://open.feishu.cn/document/ukTMukTMukTM/uczNzUjL3czM14yN3MTN)问题 2 和问题 3 开通应用权限和文档权限
400 | 1310218 | Locked Cell | 检查操作的是否为保护范围
400 | 1310214 | SpreadSheet Not Found | 检查表格 token 是否正确。可通过以下两种方式获取。了解更多，参考[电子表格概述](https://open.feishu.cn/document/ukTMukTMukTM/uATMzUjLwEzM14CMxMTN/overview)。<br>- 电子表格的 URL：https://sample.feishu.cn/sheets/==Iow7sNNEphp3WbtnbCscPqabcef==<br>- 调用[获取文件夹中的文件清单](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/file/list)
400 | 1310215 | Sheet Id Not Found | 检查工作表的 ID 是否正确。获取方式见[获取工作表](https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/sheets-v3/spreadsheet-sheet/query)
400 | 1310226 | Excess Limit | 超出限制，参考响应体中的错误提示
400 | 1310217 | Too Many Request | 检查请求是否发送过于频繁
400 | 1310235 | Retry Later | 稍后重试
500 | 1315201 | Server Error | 服务内部错误，[详询客服](https://applink.feishu.cn/client/helpdesk/open?id=6626260912531570952)
500 | 1315203 | Server Error | 服务内部错误，[详询客服](https://applink.feishu.cn/client/helpdesk/open?id=6626260912531570952)
500 | 1315210 | Server Error | 服务内部错误，[详询客服](https://applink.feishu.cn/client/helpdesk/open?id=6626260912531570952)
400 | 1310249 | Spreadsheet Deleted | 表格已被删除，请恢复表格后重试

