网淘吧来吧,欢迎您!

返回首页 微信
微信
手机版
手机版

Airtable技能使用说明

2026-03-27 新闻来源:网淘吧 围观:26
电脑广告
手机广告

Airtable

通过托管的OAuth身份验证访问Airtable API。通过完整的增删改查操作管理数据库、表格和记录。

快速开始

# List records from a table
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

基础URL

https://gateway.maton.ai/airtable/{native-api-path}

{native-api-path}替换为实际的Airtable API端点路径。网关会将请求代理到api.airtable.com并自动注入您的OAuth令牌。

身份验证

所有请求都需要在Authorization标头中包含Maton API密钥:

Authorization: Bearer $MATON_API_KEY

环境变量:将您的API密钥设置为MATON_API_KEY

export MATON_API_KEY="YOUR_API_KEY"

获取您的API密钥

  1. maton.ai
  2. 登录或创建账户前往
  3. maton.ai/settings

复制您的API密钥

在以下网址管理您的Airtable OAuth连接https://ctrl.maton.ai

列出连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=airtable&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

创建连接

python <<'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'airtable'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

获取连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

响应:

{
  "connection": {
    "connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
    "status": "ACTIVE",
    "creation_time": "2025-12-08T07:20:53.488460Z",
    "last_updated_time": "2026-01-31T20:03:32.593153Z",
    "url": "https://connect.maton.ai/?session_token=...",
    "app": "airtable",
    "metadata": {}
  }
}

在浏览器中打开返回的网址以完成OAuth授权。

删除连接

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

指定连接

如果您有多个Airtable连接,请使用Maton-Connection标头指定要使用的连接:

python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://gateway.maton.ai/airtable/v0/appXXXXX/TableName')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

如果省略,网关将使用默认(最早创建的)活动连接。

API参考

列出所有数据集

GET /airtable/v0/meta/bases

获取数据集结构

GET /airtable/v0/meta/bases/{baseId}/tables

列出记录

GET /airtable/v0/{baseId}/{tableIdOrName}?maxRecords=100

使用视图:

GET /airtable/v0/{baseId}/{tableIdOrName}?view=Grid%20view&maxRecords=100

使用筛选公式:

GET /airtable/v0/{baseId}/{tableIdOrName}?filterByFormula={Status}='Active'

使用字段选择:

GET /airtable/v0/{baseId}/{tableIdOrName}?fields[]=Name&fields[]=Status&fields[]=Email

使用排序:

GET /airtable/v0/{baseId}/{tableIdOrName}?sort[0][field]=Created&sort[0][direction]=desc

获取记录

GET /airtable/v0/{baseId}/{tableIdOrName}/{recordId}

创建记录

POST /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json

{
  "records": [
    {
      "fields": {
        "Name": "New Record",
        "Status": "Active",
        "Email": "test@example.com"
      }
    }
  ]
}

更新记录(PATCH - 部分更新)

PATCH /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json

{
  "records": [
    {
      "id": "recXXXXXXXXXXXXXX",
      "fields": {
        "Status": "Completed"
      }
    }
  ]
}

更新记录(PUT - 完全替换)

PUT /airtable/v0/{baseId}/{tableIdOrName}
Content-Type: application/json

{
  "records": [
    {
      "id": "recXXXXXXXXXXXXXX",
      "fields": {
        "Name": "Updated Name",
        "Status": "Active"
      }
    }
  ]
}

删除记录

DELETE /airtable/v0/{baseId}/{tableIdOrName}?records[]=recXXXXX&records[]=recYYYYY

分页

使用pageSizeoffset进行分页:

GET /airtable/v0/{baseId}/{tableIdOrName}?pageSize=50&offset=itrXXXXXXXXXXX

当存在更多记录时,响应包含offset

{
  "records": [...],
  "offset": "itrXXXXXXXXXXX"
}

代码示例

JavaScript

const response = await fetch(
  'https://gateway.maton.ai/airtable/v0/appXXXXX/TableName?maxRecords=10',
  {
    headers: {
      'Authorization': `Bearer ${process.env.MATON_API_KEY}`
    }
  }
);

Python

import os
import requests

response = requests.get(
    'https://gateway.maton.ai/airtable/v0/appXXXXX/TableName',
    headers={'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'},
    params={'maxRecords': 10}
)

注意事项

  • Base ID 以app
  • 开头Table ID 以tbl
  • 开头(也可使用表名)Record ID 以
  • 每次创建/更新请求最多100条记录
  • 每次删除请求最多10条记录
  • 筛选公式使用Airtable公式语法
  • 重要提示:使用curl命令时,若URL包含括号(fields[]sort[]records[])请务必使用curl -g以禁用通配符解析
  • 重要提示:当通过管道将curl输出传递给jq或其他命令时,某些shell环境中$MATON_API_KEY这类环境变量可能无法正确展开。通过管道传递时可能出现"无效API密钥"错误

错误处理

状态码含义
400缺少Airtable连接
401无效或缺少Maton API密钥
429请求频率受限(每个账户每秒10次请求)
4xx/5xx来自Airtable API的透传错误

故障排除:API密钥问题

  1. 请检查MATON_API_KEY环境变量是否已设置:
echo $MATON_API_KEY
  1. 通过列出连接来验证API密钥是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF

故障排除:无效的应用名称

  1. 请确保您的URL路径以airtable开头。例如:
  • 正确示例:https://gateway.maton.ai/airtable/v0/{baseId}/{tableIdOrName}
  • 错误示例:https://gateway.maton.ai/v0/{baseId}/{tableIdOrName}

资源

天猫隐藏优惠券

网淘吧

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏
文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第291736名访客 今日有273篇新文章/评论