python_查询并修改多维表格内容

import requests
import json

# 飞书应用配置
APP_ID = "XXX"
APP_SECRET = "XXX"

# 表格配置
APP_TOKEN = "XXX"
TABLE_ID = "XXX"

# 技术支持姓名
TECHNICAL_SUPPORT = "杰森"

def get_tenant_access_token():
    """获取 tenant_access_token"""
    url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
    headers = {
        "Content-Type": "application/json; charset=utf-8"
    }
    data = {
        "app_id": APP_ID,
        "app_secret": APP_SECRET
    }
    
    response = requests.post(url, headers=headers, json=data)
    result = response.json()
    
    if result.get("code") == 0:
        return result.get("tenant_access_token")
    else:
        raise Exception(f"获取token失败: {result.get('msg')}")

def query_technical_support_workload(token, technical_support):
    """查询技术支持人员的工作负荷"""
    url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{APP_TOKEN}/tables/{TABLE_ID}/records/search"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json; charset=utf-8"
    }
    data = {
        "view_id": "vewSz3NSZh",
        "field_names": ["技术支持", "工作负荷"],
        "filter": {
            "conjunction": "and",
            "conditions": [
                {
                    "field_name": "技术支持",
                    "operator": "is",
                    "value": [technical_support]
                }
            ]
        }
    }
    
    response = requests.post(url, headers=headers, json=data)
    result = response.json()
    
    if result.get("code") == 0:
        items = result.get("data", {}).get("items", [])
        if len(items) > 0:
            record = items[0]
            workload = record.get("fields", {}).get("工作负荷")
            record_id = record.get("record_id")
            return {"technical_support": technical_support, "workload": workload, "record_id": record_id}
        else:
            raise Exception("未找到对应技术支持人员的工作负荷记录")
    else:
        raise Exception(f"查询记录失败: {result.get('msg')}")

def update_technical_support_workload_record(token, record_id, updated_workload):
    """更新技术支持人员工作负荷"""
    url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{APP_TOKEN}/tables/{TABLE_ID}/records/{record_id}"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json; charset=utf-8"
    }
    data = {
        "fields": {
            "工作负荷": updated_workload
        }
    }
    
    response = requests.put(url, headers=headers, json=data)
    result = response.json()
    
    return {"success": result.get("code") == 0, "code": result.get("code"), "msg": result.get("msg")}

def main():
    try:
        print("开始获取 tenant_access_token...")
        token = get_tenant_access_token()
        print(f"成功获取 token: {token[:20]}...")
        
        print(f"\n开始查询技术支持人员 {TECHNICAL_SUPPORT} 的工作负荷...")
        query_result = query_technical_support_workload(token, TECHNICAL_SUPPORT)
        print(f"查询结果: {query_result}")
        
        record_id = query_result["record_id"]
        current_workload = query_result["workload"]
        updated_workload = current_workload - 1
        
        print(f"\n开始更新工作负荷...")
        print(f"当前工作负荷: {current_workload}, 更新后: {updated_workload}")
        update_result = update_technical_support_workload_record(token, record_id, updated_workload)
        
        if update_result["success"]:
            print(f"\n✅ {TECHNICAL_SUPPORT}的工作负荷已成功更新,从 {current_workload} 更新为 {updated_workload}")
        else:
            print(f"\n❌ {TECHNICAL_SUPPORT}的工作负荷更新失败: {update_result['msg']}")
            
    except Exception as e:
        print(f"\n❌ 错误: {e}")
        import traceback
        traceback.print_exc()

if __name__ == "__main__":
    main()

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐