81 lines
3.1 KiB
Python
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\Desktop\钉钉文件\(流程)续约服务流程_20260129144824.xlsx",
|
|
sheet_name='Sheet1', 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
|