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-1回访已回访.xlsx", sheet_name='Sheet5', 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