python_查询并删除飞书多维表格中的记录
·
python_查询并删除飞书多维表格中的记录
import requests
import json
# 飞书应用配置
APP_ID = "XXX"
APP_SECRET = "XXX"
# 表格配置
FEISHU_CONFIG = {
"售前": {
"app_token": "售前的app_token",
"table_id": "售前的table_id",
"view_id": "售前的view_id"
},
"售后": {
"app_token": "XXX",
"table_id": "XXX",
"view_id": "XXX"
}
}
startTriggerDict={"data":{"service_stage":"售后","rpa_coach":"火山","support_record_id_in_aw":"3"}}
APP_TOKEN = FEISHU_CONFIG[startTriggerDict["data"]["service_stage"]]["app_token"]
TABLE_ID = FEISHU_CONFIG[startTriggerDict["data"]["service_stage"]]["table_id"]
VIEW_ID = FEISHU_CONFIG[startTriggerDict["data"]["service_stage"]]["view_id"]
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_support_info_in_feishu_by_aw_record_id(token,support_record_id_in_aw):
"""查询飞书多维表格里面AW中的支持记录对应ID所在行信息"""
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":VIEW_ID,
"field_names": ["AW中的ID"],
"filter": {
"conjunction": "and",
"conditions": [
{
"field_name": "AW中的ID",
"operator": "is",
"value": [support_record_id_in_aw]
}
]
}
}
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:
feishu_record_id=items[0]["record_id"]
return feishu_record_id
else:
raise Exception("未找到对应的支持记录行信息")
else:
raise Exception(f"查询记录失败: {result.get('msg')}")
def delete_support_info_by_feishu_record_id(token, feishu_record_id):
"""删除飞书多维表格中的支持记录行信息"""
url = f"https://open.feishu.cn/open-apis/bitable/v1/apps/{APP_TOKEN}/tables/{TABLE_ID}/records/{feishu_record_id}"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json; charset=utf-8"
}
response = requests.delete(url, headers=headers)
result = response.json()
if result.get("code") == 0:
return f"飞书多维表格中'AW中的ID'为:{startTriggerDict['data']['support_record_id_in_aw']}的行信息已删除"
else:
raise Exception(f"删除记录失败: {result.get('msg')}")
def main():
try:
print("开始获取 tenant_access_token...")
token = get_tenant_access_token()
print(f"成功获取 token: {token[:20]}...")
print(f"\n开始")
feishu_record_id = query_support_info_in_feishu_by_aw_record_id(token,startTriggerDict['data']["support_record_id_in_aw"])
print(f"查询结果: {feishu_record_id}")
delete_result = delete_support_info_by_feishu_record_id(token, feishu_record_id)
print(f"删除结果: {delete_result}")
except Exception as e:
print(f"\n❌ 错误: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
main()
JS代码留存
async function feishuDeleteSupportRecordIfPreSales() {
// 仅售前阶段执行删除操作
if (startTrigger.data.service_stage !== '售前') {
return '非售前阶段,无需删除记录';
}
// 飞书应用配置
const APP_ID = "XXX";
const APP_SECRET = "XXX";
// 表格配置
const FEISHU_CONFIG = {
"售前": {
app_token: "XXX",
table_id: "xxx",
view_id: "XXX"
}
};
const service_stage = startTrigger.data.service_stage;
const support_record_id_in_aw = startTrigger.data.support_record_id_in_aw;
const APP_TOKEN = FEISHU_CONFIG[service_stage].app_token;
const TABLE_ID = FEISHU_CONFIG[service_stage].table_id;
const VIEW_ID = FEISHU_CONFIG[service_stage].view_id;
async function getTenantAccessToken() {
const url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal";
const headers = {
"Content-Type": "application/json; charset=utf-8"
};
const body = JSON.stringify({
app_id: APP_ID,
app_secret: APP_SECRET
});
const response = await fetch(url, {
method: "POST",
headers,
body
});
const result = await response.json();
if (result.code === 0) {
return result.tenant_access_token;
} else {
throw new Error(`获取token失败: ${result.msg}`);
}
}
async function querySupportInfoByAwRecordId(token, supportId) {
const url = `https://open.feishu.cn/open-apis/bitable/v1/apps/${APP_TOKEN}/tables/${TABLE_ID}/records/search`;
const headers = {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json; charset=utf-8"
};
const body = JSON.stringify({
view_id: VIEW_ID,
field_names: ["AW中的ID"],
filter: {
conjunction: "and",
conditions: [
{
field_name: "AW中的ID",
operator: "is",
value: [supportId]
}
]
}
});
const response = await fetch(url, {
method: "POST",
headers,
body
});
const result = await response.json();
if (result.code === 0) {
const items = result.data?.items || [];
if (items.length > 0) {
return items[0].record_id;
} else {
throw new Error("未找到对应的支持记录行信息");
}
} else {
throw new Error(`查询记录失败: ${result.msg}`);
}
}
async function deleteSupportInfoByFeishuRecordId(token, feishuRecordId) {
const url = `https://open.feishu.cn/open-apis/bitable/v1/apps/${APP_TOKEN}/tables/${TABLE_ID}/records/${feishuRecordId}`;
const headers = {
Authorization: `Bearer ${token}`,
"Content-Type": "application/json; charset=utf-8"
};
const response = await fetch(url, {
method: "DELETE",
headers
});
const result = await response.json();
if (result.code === 0) {
return `飞书多维表格中'AW中的ID'为:${support_record_id_in_aw}的行信息已删除`;
} else {
throw new Error(`删除记录失败: ${result.msg}`);
}
}
try {
const token = await getTenantAccessToken();
const feishuRecordId = await querySupportInfoByAwRecordId(token, support_record_id_in_aw);
const deleteResult = await deleteSupportInfoByFeishuRecordId(token, feishuRecordId);
return deleteResult;
} catch (error) {
return `❌ 错误: ${error.message}`;
}
}
return feishuDeleteSupportRecordIfPreSales();
更多推荐



所有评论(0)