Loading...
Loading...
DingTalk AI Table (multi-dimensional table) operation. This skill is used when users mention "DingTalk AI Table", "AI Table", "multi-dimensional table", "worksheet", "field", "record", "add record", "query record", "update record", "delete record", "new field", "delete field", "dingtalk AI table", "dingtalk notable", "able file". It supports all operations including worksheet management, field management, record CRUD, etc.
npx skill4agent add breath57/dingtalk-skills dingtalk-ai-table.able.able/v1.0/notabletextnumberdatereferences/api.md~/.dingtalk-skills/config| Key | Description | Source |
|---|---|---|
| DingTalk application appKey | Open Platform → Application Management → Credential Information |
| DingTalk application appSecret | Same as above |
| Operator unionId | See the "Why operatorId is required" section below |
| nodeId of AI Table | Extracted from AI Table share link |
~/.dingtalk-skills/configThe following information is required to proceed (no need to fill in existing information):
- DingTalk application appKey (DingTalk Open Platform → Application Management → Credential Information)
- DingTalk application appSecret
- AI Table link (used to extract base_id)
- Your DingTalk userId or unionId (to operate the table as your identity)
Note:/APP_KEY/APP_SECRETare credentials, it is forbidden to print them completely in the output, only show the first 4 digits +OPERATOR_IDwhen confirming.****
POST https://api.dingtalk.com/v1.0/oauth2/accessToken
Content-Type: application/json
{ "appKey": "<应用 appKey>", "appSecret": "<应用 appSecret>" }x-acs-dingtalk-access-token: <accessToken>operatorId=<user unionId>base_id.ablehttps://alidocs.dingtalk.com/i/nodes/<base_id>?...
↑ This part is base_id/nodes/operatorIdunionIduserIduserIdaccess_tokenGET https://oapi.dingtalk.com/gettoken?appkey=<appKey>&appsecret=<appSecret>{ "access_token": "xxx", "expires_in": 7200 }POST https://oapi.dingtalk.com/topapi/v2/user/get?access_token=<旧式token>
Content-Type: application/json
{ "userid": "<钉钉 userId>" }result.unionidNote:(with underscore) may be empty in exclusive DingTalk organizations, please useresult.union_id.result.unionid
senderUnionIdoperatorIdGET https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets?operatorId={operatorId}
x-acs-dingtalk-access-token: <accessToken>{
"value": [
{ "id": "HAcL4SD", "name": "项目" },
{ "id": "nr2iEiW", "name": "任务" }
]
}GET https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}?operatorId={operatorId}{ "id": "HAcL4SD", "name": "项目" }POST https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets?operatorId={operatorId}
Content-Type: application/json
{
"name": "新工作表名称",
"fields": [
{ "name": "标题", "type": "text" },
{ "name": "数量", "type": "number" }
]
}fields{ "id": "新sheetId", "name": "新工作表名称" }DELETE https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}?operatorId={operatorId}{ "success": true }GET https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}/fields?operatorId={operatorId}{
"value": [
{ "id": "6mNRNHb", "name": "标题", "type": "text" },
{ "id": "BDGLCo2", "name": "截止日期", "type": "date", "property": { "formatter": "YYYY-MM-DD" } },
{ "id": "mr8APlG", "name": "数量", "type": "number", "property": { "formatter": "INT" } }
]
}POST https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}/fields?operatorId={operatorId}
Content-Type: application/json
{
"name": "字段名称",
"type": "number"
}typetextnumberdate{ "id": "新fieldId", "name": "字段名称", "type": "number", "property": { "formatter": "INT" } }PUT https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}/fields/{field_id}?operatorId={operatorId}
Content-Type: application/json
{
"name": "新字段名称"
}{ "id": "fieldId" }DELETE https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}/fields/{field_id}?operatorId={operatorId}{ "success": true }POST https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}/records?operatorId={operatorId}
Content-Type: application/json
{
"records": [
{ "fields": { "标题": "任务一", "数量": 3 } },
{ "fields": { "标题": "任务二", "数量": 5 } }
]
}fields{ "value": [{ "id": "记录ID1" }, { "id": "记录ID2" }] }POST https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}/records/list?operatorId={operatorId}
Content-Type: application/json
{
"maxResults": 20,
"nextToken": ""
}{
"records": [
{
"id": "RNXU1Vm2L2",
"fields": { "标题": "任务一", "数量": 3 },
"createdTime": 1772723541439,
"createdBy": { "unionId": "xxx" },
"lastModifiedTime": 1772723541439,
"lastModifiedBy": { "unionId": "xxx" }
}
],
"hasMore": false,
"nextToken": ""
}hasMore=truenextTokenPUT https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}/records?operatorId={operatorId}
Content-Type: application/json
{
"records": [
{ "id": "记录ID", "fields": { "标题": "新标题" } }
]
}{ "value": [{ "id": "记录ID" }] }POST https://api.dingtalk.com/v1.0/notable/bases/{base_id}/sheets/{sheet_id}/records/delete?operatorId={operatorId}
Content-Type: application/json
{
"recordIds": ["记录ID1", "记录ID2"]
}{ "success": true }GET /sheetsGET /sheetsGET /fieldsPOST /recordsGET /sheetsPOST /records/listPOST /records/listPOST /records/deleteGET /sheetsPOST /fields{ "name": "备注", "type": "text" }| type | Meaning |
|---|---|
| Plain text |
| Number (including |
| Date (including |
| HTTP Status Code / code | Meaning | Handling Method |
|---|---|---|
| 401 | Token expired | Re-acquire accessToken |
| 403 | Insufficient permissions | Check if the application has enabled Notable related permissions |
| Invalid base_id or no access permission | Confirm that the AI Table nodeId is correct and authorized |
| 404 | Worksheet or field does not exist | Confirm that sheet_id / field_id is correct |
| 429 | Rate limit triggered | Retry after waiting for 1 second |