# 多维表格常见问题

## 1. 如何在多维表格中上传附件？

**第 1 步**：调用[上传素材](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/upload_all)或[分片上传素材](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/upload_prepare)接口将附件上传至多维表格，获取文件的 file_token。

**第 2 步**：调用[新增记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/create)或[更新记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/update)接口，将 file_token 的值传入多维表格中。请求示例如下所示：
file_token 仅支持在当前多维表格中使用，要上传附件至其他多维表格，你仍需要重新上传素材获取新的 file_token。
```json
{
    "records": [
        {
            "fields": {
                "附件": [
                    {
                        "file_token": "boxbcCFb2dBwMK9S8kDILk1tayh"
                    },
                    {
                        "file_token": "boxbcCFb2dBwMK9S8kDILk1tayh"
                    }
                ]
            }
        },
        {
            "fields": {
                "附件": [
                    {
                        "file_token": "boxbcCFb2dBwMK9S8kDILk1tayh"
                    },
                    {
                        "file_token": "boxbcCFb2dBwMK9S8kDILk1tayh"
                    }
                ]
            }
        }
    ]
}
```

## 2. 如何下载多维表格中的附件？

**第 1 步**：调用[查询记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/search)获取多维表格中附件的 file_token。

**第 2 步**：调用[下载素材](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/download)或者[获取素材临时下载链接](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/drive-v1/media/batch_get_tmp_download_url)接口下载附件。

若多维表格开启了高级权限，你需要添加 extra 参数作为 URL 查询参数鉴权。你可通过以下方式获取 extra 参数：

1. 调用[查询记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/search)接口，响应示例中会返回附件的下载链接，如下所示：
    ```json
    {
      "code": 0,
      "data": {
        "has_more": false,
        "items": [
          {
            "fields": {
              "附件": [
                {
                  "file_token": "RSkabsaphoy6yVxK0mGcggabcef",
                  "name": "74d2c703524489dbabcef.png",
                  "size": 87123,
                  "tmp_url": "https://open.feishu.cn/open-apis/drive/v1/medias/batch_get_tmp_download_url?file_tokens=RSkabsaphoy6yVxK0mGcggabcef&extra={"bitablePerm":{"tableId":"tblz8ExGaVhuiSD1","rev":32}}",  // 素材临时下载链接对应的 URL 值，需要对此字符串进行 URL 编码
                  "type": "image/png",
                  "url": "https://open.feishu.cn/open-apis/drive/v1/medias/RSkabsaphoy6yVxK0mGcggabcef/download?extra={"bitablePerm":{"tableId":"tblz8ExGaVhuiSD1","rev":32}}"   // 下载素材对应的 URL 值，需要对此字符串进行 URL 编码
                }
              ]
            },
            "record_id": "recbMzD0zT"
          }
        ],
        "total": 1
      },
      "msg": "success"
    }
    ```

2. 构建示例如下所示：

```JSON
    {"bitablePerm":{"tableId":"tblO6OeNZxfabcef","attachments":{"fld32zZi5I":{"rec0BuOHq":["boxbcsQNT0JsmrztOnX530abcef"]}}}}
    // 转义后
    https://open.feishu.cn/open-apis/drive/v1/medias/boxbcsQNT0JsmrztOnX530abcef/download?extra=%7B%22bitablePerm%22%3A%7B%22tableId%22%3A%22tblO6OeNZxfabcef%22%2C%22attachments%22%3A%7B%22fld32zZi5I%22%3A%7B%22rec0BuOHq%22%3A%5B%22boxbcsQNT0JsmrztOnX530abcef%22%5D%7D%7D%7D%7D
    ```

## 3. 调用多维表格相关接口，返回 1254040、1254041、1254042、1254043、1254044 等 NotFound 错误码，该如何解决？

上述这些错误码表示未找到到标识各类 ID 对应的资源。你可参考以下方法解决：

1. 确认 ID 是否正确。你可参考[多维表格概述](https://open.feishu.cn/document/ukTMukTMukTM/uUDN04SN0QjL1QDN/bitable-overview)标获取各类资源的 ID
2. 如果 ID 对应的资源刚创建完成后出现此类报错，可能是遇到了服务器的主从延迟问题。你可尝试等待几秒之后重试。

## 4. 调用查询记录接口成功，数据返回为空，但实际多维表格存在数据，该如何解决？

这一般是由于多维表格开通了高级权限，导致调用身份权限不足。你需给予调用身份数据表的 **可管理** 权限或多维表格的 **可管理** 等权限，再重新调用。具体步骤如下所示：

- 对用户授予可管理权限，你可在 **多维表格高级权限设置** 中添加用户，为用户开通足够权限。具体可参考飞书帮助中心文档[使用多维表格高级权限](https://www.feishu.cn/hc/zh-CN/articles/588604550568-%E4%BD%BF%E7%94%A8%E5%A4%9A%E7%BB%B4%E8%A1%A8%E6%A0%BC%E9%AB%98%E7%BA%A7%E6%9D%83%E9%99%90)。

- 对应用授予可管理权限，你需通过多维表格页面右上方 **「...」** -> **「...更多」** ->**「添加文档应用」** 入口为应用添加可管理权限。

![](//sf3-cn.feishucdn.com/obj/open-platform-opendoc/22c027f63c540592d3ca8f41d48bb107_CSas7OYJBR.png?height=1994&lazyload=true&maxWidth=550&width=3278)

![image.png](//sf3-cn.feishucdn.com/obj/open-platform-opendoc/9f3353931fafeea16a39f0eb887db175_0tjzC9P3zU.png?height=728&lazyload=true&maxWidth=550&width=890)

**注意**：
    在 **添加文档应用** 前，你需确保目标应用至少开通了一个多维表格的 [API 权限](https://open.feishu.cn/document/ukTMukTMukTM/uYTM5UjL2ETO14iNxkTN/scope-list)。否则你将无法在文档应用窗口搜索到目标应用。    

- 你也可以在 **多维表格高级权限设置** 中添加用户或一个包含应用的群组, 给予这个群自定义的读写等权限。  

## 5. 调用查询记录接口，复选框返回数据为空，如何解决？

在多维表格中，如果字段为空值，则查询记录接口不返回数据。相应地，如果复选框字段为空值（即用户没有选中和取消选中过该复选框），则查询记录接口也不返回数据。在此场景下，由于空值效果与复选框为 `false` 效果相同，开发者需自行兼容该空值场景。
## 6. 如何筛选自定义编号类型的自动编号字段？

要筛选含有固定字符的自动编号字段，需将自定义的固定字符去除，再筛选，否则将返回空数据。如下图，自定义的固定字符为 2024，在调用查询记录接口时，需确保仅 value 的值为自增部分数字，不包含自定义的 2024。

![](//sf3-cn.feishucdn.com/obj/open-platform-opendoc/a8fc72c1c50b1621a18886aba56c0008_PMPNNaXEXe.png?height=488&lazyload=true&maxWidth=350&width=495)

![](//sf3-cn.feishucdn.com/obj/open-platform-opendoc/0dd311da6db2fa91ad4e3ab2425ad3d7_myNxGtTNGr.png?height=428&lazyload=true&maxWidth=650&width=1594)

## 7. 调用查询记录接口，如何筛选人员字段？

对于人员字段，你需在 value 中传入人员的用户 ID。用户 ID 的类型与查询记录接口中查询参数 `user_id_type` 指定的类型一致，默认为 Open ID 类型。以下为筛选人员 ID 为 `ou_00d9ea2d7bcd6b6aa7d71dd88deabcef` 和 `ou_5fdfc3d312b24d28224769baf52abcef` 的请求示例：

```json
{
  "view_id": "vewfrk8iX4",
  "field_names": [
    "创建人"
  ],
  "filter": {
    "conjunction": "and",
    "conditions": [
      {
        "field_name": "创建人",
        "operator": "contains",
        "value": [
          "ou_00d9ea2d7bcd6b6aa7d71dd88deabcef",
          "ou_5fdfc3d312b24d28224769baf52abcef"
        ]
      }
    ]
  }
}
```
## 8. 查询记录接口是否支持查询特定行，如数据表第 10 行~20 行的数据？

1. 在多维表格中新增一个自动编号字段，编号类型选择自增数字。

![](//sf3-cn.feishucdn.com/obj/open-platform-opendoc/036152cbc21520eb106eae1e3329bdec_haAdeKitl7.png?height=561&lazyload=true&maxWidth=350&width=518)

2. 筛选该自动编号。例如要查询第 10~20 行数据，则筛选小于 21、大于 9 的编号，然后调用[查询记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/search)接口，请求体如下所示：

```json
    {
      "view_id": "vewfrk8iX4",
      "field_names": [],
      "filter": {
        "conjunction": "and",
        "conditions": [
          {
            "field_name": "编号",
            "operator": "isGreater",
            "value": [
              "9"
            ]
          },
          {
            "field_name": "编号",
            "operator": "isLess",
            "value": [
              "21"
            ]
          }
        ]
      }
    }
    ```

你也可以调用[批量获取记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/batch_get)接口，使用记录的 Record ID 来查询，获取多条记录的数据。

## 9. 如何获取多维表格指定数据表的总记录数（或总行数）？

你可以调用[查询记录](https://open.feishu.cn/document/uAjLw4CM/ukTMukTMukTM/reference/bitable-v1/app-table-record/search)接口，在请求体中将 `conditions` 字段设为空或不设置，以下为请求体示例：

```json
{
  "view_id": "vewfrk8iX4",  // 请替换为实际的 view_id
  "filter": {
    "conjunction": "and",
    "conditions": []
  }
}
```
若请求成功，响应体中将返回 `total` 字段，即为记录总数。