jpskill.com
📦 その他 コミュニティ

feishu-bitable

飞书多维表格操作。记录 CRUD、字段管理、视图、权限、公式、关联。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o feishu-bitable.zip https://jpskill.com/download/21596.zip && unzip -o feishu-bitable.zip && rm feishu-bitable.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/21596.zip -OutFile "$d\feishu-bitable.zip"; Expand-Archive "$d\feishu-bitable.zip" -DestinationPath $d -Force; ri "$d\feishu-bitable.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して feishu-bitable.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → feishu-bitable フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
1

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

飛書多維表格

Bitable API を通じてデータ、フィールド、ビュー、および権限を操作します。

ベース URL: https://open.feishu.cn/open-apis/bitable/v1

認証とトークン取得

feishu_skills ルートディレクトリから共有スクリプトを実行します。

TOKEN="$(./scripts/get_feishu_token.sh)"

リクエストヘッダーはすべて Authorization: Bearer ${TOKEN} を使用します。

ビジネスインターフェースがトークン無効、期限切れ、または 401 を返した場合、強制的に更新した後、元のリクエストを一度だけ再試行します。

TOKEN="$(./scripts/get_feishu_token.sh --force-refresh)"

環境変数:

  • FEISHU_APP_ID
  • FEISHU_APP_SECRET

ローカルキャッシュ: ./.feishu_token_cache.json(期限切れでなければ直接再利用、デフォルトでは 5 分前に更新)

主要パラメータ:

  • app_token: 多次元テーブルの URL の /base/ の後の文字列
  • table_id: リスト API を呼び出して取得

レコード操作

API エンドポイント 説明
単一レコードの追加 POST /apps/{app_token}/tables/{table_id}/records -
バッチ追加 POST .../records/batch_create 最大 500 件、Upsert をサポート
更新 PUT .../records/{record_id} -
バッチ更新 POST .../records/batch_update 最大 500 件
バッチ削除 POST .../records/batch_delete 最大 500 件
検索 POST .../records/search filter/sort/ページネーションをサポート

全レコードのページネーション検索(1 回につき最大 500 件、has_more: false になるまでループ):

page_token = None
all_records = []
while True:
    body = {"page_size": 500}
    if page_token:
        body["page_token"] = page_token
    resp = post(".../records/search", json=body)
    all_records.extend(resp["data"]["items"])
    if not resp["data"].get("has_more"):
        break
    page_token = resp["data"]["page_token"]

リクエスト例:

{
  "fields": {
    "名称": "テスト",
    "金額": 100,
    "進捗": 0.75,
    "評価": 4,
    "日付": 1770508800000,
    "ステータス": "進行中",
    "タグ": ["重要", "緊急"],
    "完了": true,
    "担当者": [{"id": "ou_xxx"}],
    "電話": "13800138000",
    "リンク": {"text": "公式サイト", "link": "https://example.com"}
  }
}

⚠️ 数値は文字列で渡さないでください。日付は 13 桁のミリ秒タイムスタンプである必要があります。


フィールドタイプ形式

type ui_type 日本語名 書き込み形式
1 Text 複数行テキスト 文字列 "事務用品"
1 Email メールアドレス 文字列 "test@example.com"
2 Number 数値 数値 100
2 Currency 通貨 数値 1280.50
2 Progress 進捗 数値(0~1) 0.25 (25%)
2 Rating 評価 数値(1~5) 3
3 SingleSelect 単一選択 文字列 "支出" (オプションを自動作成)
4 MultiSelect 複数選択 文字列配列 ["飲食","交通"]
5 DateTime 日付 ミリ秒タイムスタンプ 1770508800000
7 Checkbox チェックボックス ブール値 true
11 User ユーザー オブジェクト配列 [{"id":"ou_xxx"}]
13 Phone 電話 文字列 "13800138000"
15 Url ハイパーリンク オブジェクト {"text":"名称","link":"https://..."}
17 Attachment 添付ファイル オブジェクト配列 [{"file_token":"xxx"}]
18 SingleLink 単方向リンク 文字列配列 ["recuxxx"]
21 DuplexLink 双方向リンク 文字列配列 ["recuxxx"]
22 Location 位置情報 文字列 "116.397,39.903"

API 書き込み非対応: 数式、ルックアップ、作成時間、更新者、自動採番

日付形式変換:

import datetime
ts = int(datetime.datetime(2026, 2, 9).timestamp() * 1000)
# → 1770508800000

フィールド管理

API エンドポイント 説明
フィールドリストの取得 GET .../fields type と ui_name を返します
フィールドの追加 POST .../fields {"field_name":"新フィールド","type":1}
フィールドの更新 PUT .../fields/{field_id} 単一選択の変更には完全な property を提供する必要があります
フィールドの削除 DELETE .../fields/{field_id} -

数式フィールドの例:

{
  "type": 20,
  "field_name": "利益",
  "property": {"formula_expression": "[売上]-[コスト]"}
}

関連フィールドの例:

{
  "type": 18,
  "field_name": "関連顧客",
  "property": {"table_id": "tblXXX", "multiple": true}
}

データテーブル管理

API エンドポイント 説明
多次元テーブルの作成 POST /apps {"name":"データベース名"}
データテーブルのリスト表示 GET /apps/{app_token}/tables -
データテーブルの追加 POST /apps/{app_token}/tables {"table":{"name":"テーブル名"}}
テーブルのバッチ追加 POST .../tables/batch_create 最大 10 テーブル
データテーブルの削除 DELETE .../tables/{table_id} -
データテーブルのコピー POST .../tables/{table_id}/copy -

⚠️ 権限管理(重要)

  • API で作成されたテーブルは、デフォルトではボットのみに表示されます。
  • 作成後、ユーザーを共同作業者として追加する必要があります。
    POST /permissions/{app_token}/members
    {
    "member_type": "user",
    "member_id": "ou_xxx",
    "perm": "full_access"
    }
  • 権限タイプ:view / edit / full_access

ビュー管理

API エンドポイント 説明
ビューのリスト表示 GET .../tables/{table_id}/views -
ビューの作成 POST .../tables/{table_id}/views {"view_name":"新ビュー","view_type":"grid"}
ビューの削除 DELETE .../views/{view_id} -

ビュータイプ: grid(テーブル) / kanban(カンバン) / gallery(ギャラリー) / gantt(ガントチャート)


権限管理

API エンドポイント 説明
共同作業者の作成 POST /apps/{app_token}/roles/{role_id}/members/batch_create -
共同作業者の削除 POST .../members/batch_delete -
権限の更新 PUT /apps/{app_token}/roles/{role_id} -

ロールタイプ: owner / editor / reader


⚠️ 存在しないインターフェース

/apps/:app_token/tables/:table_id/statistics このインターフェースは存在しません。飛書公式ドキュメントには統計集計 API は提供されていません。

データ(合計、カウントなど)を統計する必要がある場合は、以下をお勧めします。

  1. POST .../records/search を使用して全レコードを取得し、クライアント側で計算します。
  2. 多次元テーブルに数式フィールド(例: SUMCOUNT)を作成し、API を介してフィールド値を読み取ります。

ベストプラクティス

  1. バッチ操作を優先(API 呼び出しを減らすため)
  2. フィールドタイプを厳密に一致させる(書き込み失敗を避けるため)
  3. 日付はミリ秒タイムスタンプを使用(Python: int(datetime.timestamp() * 1000)
  4. 関連フィールドでリレーショナル機能を実現
  5. テーブル作成後すぐにユーザーを共同作業者として追加(非表示を避けるため)
  6. 単一選択フィールドはオプションを自動作成(オプションテキストを直接書き込むだけでよい)

テスト検証

実測で検証済みの 15 種類のフィールドタイプ:

  • テキスト、進捗、複数選択、単一選択、日付、チェックボックス、電話、ユーザー、ハイパーリンク
  • メールアドレス、通貨、評価、位置情報、単方向リンク、双方向リンク

テストテーブル:https://jvbmlo28x0.feishu.cn/base/YdOpb47PvalSbQsHPyXc7LrNnUh

📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

飞书多维表格

通过 Bitable API 操作数据、字段、视图和权限。

Base URL: https://open.feishu.cn/open-apis/bitable/v1

认证与 Token 获取

feishu_skills 根目录执行共享脚本:

TOKEN="$(./scripts/get_feishu_token.sh)"

请求头统一使用 Authorization: Bearer ${TOKEN}

如果业务接口返回 token 无效、过期或 401,强制刷新后仅重试一次原请求:

TOKEN="$(./scripts/get_feishu_token.sh --force-refresh)"

环境变量:

  • FEISHU_APP_ID
  • FEISHU_APP_SECRET

本地缓存: ./.feishu_token_cache.json(未过期直接复用,默认提前 5 分钟刷新)

关键参数:

  • app_token: 多维表格 URL 中 /base/ 后的字符串
  • table_id: 调用列表 API 获取

记录操作

API 端点 说明
新增单条 POST /apps/{app_token}/tables/{table_id}/records -
批量新增 POST .../records/batch_create 最多 500 条,支持 Upsert
更新 PUT .../records/{record_id} -
批量更新 POST .../records/batch_update 最多 500 条
批量删除 POST .../records/batch_delete 最多 500 条
查询 POST .../records/search 支持 filter/sort/分页

分页查询全部记录(单次最多 500 条,循环直到 has_more: false):

page_token = None
all_records = []
while True:
    body = {"page_size": 500}
    if page_token:
        body["page_token"] = page_token
    resp = post(".../records/search", json=body)
    all_records.extend(resp["data"]["items"])
    if not resp["data"].get("has_more"):
        break
    page_token = resp["data"]["page_token"]

请求示例:

{
  "fields": {
    "名称": "测试",
    "金额": 100,
    "进度": 0.75,
    "评分": 4,
    "日期": 1770508800000,
    "状态": "进行中",
    "标签": ["重要", "紧急"],
    "完成": true,
    "负责人": [{"id": "ou_xxx"}],
    "电话": "13800138000",
    "链接": {"text": "官网", "link": "https://example.com"}
  }
}

⚠️ 数值不要传字符串,日期必须是 13 位毫秒时间戳。


字段类型格式

type ui_type 中文名 写入格式 示例
1 Text 多行文本 字符串 "办公用品"
1 Email 邮箱 字符串 "test@example.com"
2 Number 数字 数值 100
2 Currency 货币 数值 1280.50
2 Progress 进度 数值(0~1) 0.25 (25%)
2 Rating 评分 数值(1~5) 3
3 SingleSelect 单选 字符串 "支出" (自动创建选项)
4 MultiSelect 多选 字符串数组 ["餐饮","交通"]
5 DateTime 日期 毫秒时间戳 1770508800000
7 Checkbox 复选框 布尔值 true
11 User 人员 对象数组 [{"id":"ou_xxx"}]
13 Phone 电话 字符串 "13800138000"
15 Url 超链接 对象 {"text":"名称","link":"https://..."}
17 Attachment 附件 对象数组 [{"file_token":"xxx"}]
18 SingleLink 单向关联 字符串数组 ["recuxxx"]
21 DuplexLink 双向关联 字符串数组 ["recuxxx"]
22 Location 地理位置 字符串 "116.397,39.903"

不支持 API 写入: 公式、查找引用、创建时间、修改人、自动编号

日期格式转换:

import datetime
ts = int(datetime.datetime(2026, 2, 9).timestamp() * 1000)
# → 1770508800000

字段管理

API 端点 说明
获取字段列表 GET .../fields 返回 type 和 ui_name
新增字段 POST .../fields {"field_name":"新字段","type":1}
更新字段 PUT .../fields/{field_id} 修改单选需提供完整 property
删除字段 DELETE .../fields/{field_id} -

公式字段示例:

{
  "type": 20,
  "field_name": "利润",
  "property": {"formula_expression": "[营收]-[成本]"}
}

关联字段示例:

{
  "type": 18,
  "field_name": "关联客户",
  "property": {"table_id": "tblXXX", "multiple": true}
}

数据表管理

API 端点 说明
创建多维表格 POST /apps {"name":"数据库名称"}
列出数据表 GET /apps/{app_token}/tables -
新增数据表 POST /apps/{app_token}/tables {"table":{"name":"表名"}}
批量新增表 POST .../tables/batch_create 最多 10 张表
删除数据表 DELETE .../tables/{table_id} -
复制数据表 POST .../tables/{table_id}/copy -

⚠️ 权限管理(重要)

  • 通过 API 创建的表格默认只对机器人可见
  • 创建后需添加用户为协作者:
    POST /permissions/{app_token}/members
    {
    "member_type": "user",
    "member_id": "ou_xxx",
    "perm": "full_access"
    }
  • 权限类型:view / edit / full_access

视图管理

API 端点 说明
列出视图 GET .../tables/{table_id}/views -
创建视图 POST .../tables/{table_id}/views {"view_name":"新视图","view_type":"grid"}
删除视图 DELETE .../views/{view_id} -

视图类型: grid(表格) / kanban(看板) / gallery(画册) / gantt(甘特图)


权限管理

API 端点 说明
创建协作者 POST /apps/{app_token}/roles/{role_id}/members/batch_create -
删除协作者 POST .../members/batch_delete -
更新权限 PUT /apps/{app_token}/roles/{role_id} -

角色类型: owner / editor / reader


⚠️ 不存在的接口

/apps/:app_token/tables/:table_id/statistics 该接口不存在,飞书官方文档中未提供统计汇总 API。

如需统计数据(如求和、计数),建议:

  1. POST .../records/search 拉取全量记录后在客户端计算
  2. 在多维表格中创建公式字段(如 SUMCOUNT)后通过 API 读取字段值

最佳实践

  1. 批量操作优先(减少 API 调用)
  2. 字段类型严格匹配(避免写入失败)
  3. 日期用毫秒时间戳(Python: int(datetime.timestamp() * 1000)
  4. 关联字段实现关系型能力
  5. 创建表格后立即添加用户为协作者(避免不可见)
  6. 单选字段自动创建选项(直接写入选项文本即可)

测试验证

已通过实测验证的 15 种字段类型:

  • 文本、进度、多选、单选、日期、复选框、电话、人员、超链接
  • 邮箱、货币、评分、地理位置、单向关联、双向关联

测试表格:https://jvbmlo28x0.feishu.cn/base/YdOpb47PvalSbQsHPyXc7LrNnUh