Files
F6--/张阳脚本/宜搭刷数据/批量更新脚本.py
T
2026-04-09 10:19:09 +08:00

81 lines
3.1 KiB
Python

import time
from tqdm import tqdm
from api import API
import pandas as pd
import json
import requests
# 需要注意 人员多选,以列表形式传递
# 筛选进行中的实例
class Main:
api_instance = API()
# 获取token
TOKEN = api_instance.generateToken()
# 表单id
FORMID2 = "FORM-PE866MD1MJMU0WGLYRFLYEN5YN9L1I55Z7ZUK22" # [流程]续约服务流程
FORMID = "FORM-L89662816B04LXH893M4K50Q7MIZ1SVQI08ALU2" # 读取新签节点化服务待办
FORMID1 = "FORM-33666CB1XDU37AU57RKPK990C79S2YMOEEC8LS" # [表单]异常服务跟进待办2023
# 读取excel表格
df = pd.read_excel(r"C:\Users\hp_z66\OneDrive\Desktop\钉钉文件\2026-3已导入.xlsx",
sheet_name='刷数据(注意部分字段替换)', dtype='string', header=1) # 此处将表头设置为了第二行
df.fillna('', inplace=True)
@staticmethod
def str_to_list(value):
# 如果是字符串类型,并且包含逗号
if isinstance(value, str) and ',' in value:
# 分割并去除前后空格
return [item.strip() for item in value.split(',')]
else:
# 否则返回单元素列表或原始值
return value.strip() if isinstance(value, str) else value
# print(df)
# 执行自动化脚本
column_names_list = df.columns.tolist()
i = 1
for column_name in tqdm(column_names_list[1:]):
# 获取表头名字,此处需要新建一行,将表头换为宜搭的关键字
for df_len in tqdm(range(len(df))):
# 遍历表格内容,两次遍历定位数据具体位置
if df.iloc[df_len, i] != "":
df.iloc[df_len, i] = str(df.iloc[df_len, i])
# 数据不为空时传递data_new
data_new = {
column_name: str_to_list(df.iloc[df_len, i])
}
print(data_new)
# 指定主键
formInstanceId = df.loc[df_len, '实例ID']
# 引入重试机制
retry_count = 0
success = False
while retry_count < 15 and not success:
try:
res = api_instance.update_from(token=TOKEN, formInstanceId=formInstanceId, data_new=data_new)
# 假设成功返回的状态码是200
if res.status_code == 200:
print(column_name, df_len, df.loc[df_len, '实例ID'], data_new, res.json())
success = True
else:
print(f"Error: {res.status_code}, Retrying...")
retry_count += 1
time.sleep(2)
except Exception as e:
print(f"Exception occurred: {e}, Retrying...")
retry_count += 1
time.sleep(2)
if not success:
print(f"Failed after 15 retries for formInstanceId: {formInstanceId}")
time.sleep(0.4)
i += 1