Files
F6--/其它系统脚本/字段对应关系格式处理.ipynb
2026-01-30 11:28:35 +08:00

558 lines
23 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"读取到 对应关系维护表中 2347 条数据!\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-10-1f1f9d9b869f>:138: DeprecationWarning: invalid escape sequence '\\/'\n",
" chinese_str = ALL_DATA_code[i]['formData']['textField_ldo3qxar'].encode('utf-8').decode('unicode_escape')\n"
]
}
],
"source": [
"# 基础函数配置\n",
"import pandas as pd\n",
"import requests\n",
"from pathlib import Path\n",
"from urllib.parse import quote\n",
"import json\n",
"import numpy as np\n",
"import time\n",
"import openpyxl\n",
"from datetime import datetime\n",
"\n",
"ROOT = Path('.').absolute() # 当前工作目录\n",
"\n",
"def generateToken() -> str:\n",
" \"\"\" 生成 token \"\"\"\n",
"\n",
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
"\n",
" # 该信息在钉钉开放应用中\n",
" data = {\n",
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
" }\n",
"\n",
" res = requests.post(token_api, json=data)\n",
" token = res.json()['accessToken']\n",
"\n",
" return token\n",
"def read_instances(token, formUuid, page, n):\n",
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
"\n",
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
"\n",
" headers = {\n",
" \"Content-Type\": \"application/json\",\n",
" \"x-acs-dingtalk-access-token\": token\n",
" }\n",
"\n",
" formData = {\n",
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
" \"userId\" : \"yida_pub_account\",\n",
" \"language\" : \"zh_CN\",\n",
" \"formUuid\" : formUuid,\n",
" \"currentPage\" : page,\n",
" \"pageSize\" : n\n",
" }\n",
"\n",
" res = requests.post(api, headers=headers, json=formData)\n",
" return res.json()\n",
"\n",
"def update_instances(TOKEN, processInstanceId,name):\n",
" \"\"\" 更新表单实例 \"\"\"\n",
"\n",
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
"\n",
" headers = {\n",
" \"Content-Type\": \"application/json\",\n",
" \"x-acs-dingtalk-access-token\": TOKEN\n",
" }\n",
"\n",
" data_new= {\n",
" 'radioField_lfth6zsc' : name # 新签服务单状态\n",
" }\n",
"\n",
" payload = {\n",
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
" \"userId\" : \"yida_pub_account\",\n",
" \"language\" : \"zh_CN\",\n",
" \"formInstanceId\" : processInstanceId,\n",
" \"useLatestVersion\" : 'false',\n",
" \"updateFormDataJson\" : json.dumps(data_new, cls=NpEncoder) #json.dumps(data_new, cls=NpEncoder)\n",
" }\n",
"\n",
" res = requests.put(api, headers=headers,json =payload)\n",
"\n",
" return res.json()\n",
"\n",
"class NpEncoder(json.JSONEncoder):\n",
" def default(self, obj):\n",
" if isinstance(obj, np.integer):\n",
" return int(obj)\n",
" elif isinstance(obj, np.floating):\n",
" return float(obj)\n",
" elif isinstance(obj, np.ndarray):\n",
" return obj.tolist()\n",
" else:\n",
" return super(NpEncoder, self).default(obj)\n",
" \n",
"TOKEN = generateToken() \n",
"FORMID = \"FORM-JD8668C1CAC7X39ND7GNN4O8D2UA3L21P3ODL22\" # 对应关系维护\n",
"# 读取对应关系维护的所有数据\n",
"form_data = read_instances(token=TOKEN, formUuid=FORMID, page=1, n=100)\n",
"PAGES = form_data.get('totalCount')//100 + 1\n",
"ALL_DATA_code = []\n",
"\"\"\" 获取全量数据 \"\"\"\n",
"for i in range(1, PAGES+1):\n",
" form_data = read_instances(token=TOKEN, formUuid=FORMID, page=i, n=100)\n",
" for data in form_data.get('data'):\n",
" if data['formData']['selectField_ldo3qxal'] == \"私有\":\n",
" ALL_DATA_code.append(data)\n",
"print(f'读取到 对应关系维护表中 {len(ALL_DATA_code)} 条数据!')\n",
"\n",
"wb = openpyxl.Workbook()\n",
"sheet = wb.active\n",
"# 写入数据到单元格中\n",
"a_date = '2023-11-01' # 手动输入时间\n",
"cell_x = 2\n",
"cell_y = 1\n",
"for i in range(0,len(ALL_DATA_code)):\n",
" a_date_new = datetime.strptime(a_date, '%Y-%m-%d')\n",
" b_date = datetime.strptime(ALL_DATA_code[i]['createdTimeGMT'][:10], '%Y-%m-%d')\n",
" if a_date_new <= b_date:\n",
" list_x = 0\n",
" sheet.cell(row=cell_x, column=cell_y, value=\"字段对应关系类型:\") \n",
" sheet.cell(row=cell_x, column=cell_y + 1, value=ALL_DATA_code[i]['formData']['textField_ldo3qxao']) \n",
" sheet.cell(row=cell_x, column=cell_y + 2, value=\"创建人:\") \n",
" sheet.cell(row=cell_x, column=cell_y + 3, value=ALL_DATA_code[i]['formData']['textField_ldo3qxam']) \n",
" sheet.cell(row=cell_x, column=cell_y + 4, value=\"模板名称:\") \n",
" sheet.cell(row=cell_x, column=cell_y + 5, value=ALL_DATA_code[i]['formData']['textField_ldo3qxan']) \n",
" sheet.cell(row=cell_x, column=cell_y + 6, value=\"创建时间:\") \n",
" sheet.cell(row=cell_x, column=cell_y + 7, value=ALL_DATA_code[i]['createdTimeGMT']) \n",
" sheet.cell(row=cell_x, column=cell_y + 8, value=\"表单实例id\") \n",
" sheet.cell(row=cell_x, column=cell_y + 9, value=ALL_DATA_code[i]['formInstanceId']) \n",
" sheet.cell(row=cell_x, column=cell_y + 10, value=\"删除\") \n",
" sheet.cell(row=cell_x, column=cell_y + 11, value=\"新增\") \n",
"\n",
"\n",
" list_new = json.loads(ALL_DATA_code[i]['formData']['textField_ldo3qxap'].replace(\"'\", '\"'))\n",
" for a in range(0,len(list_new)):\n",
" sheet.cell(row=cell_x + 1, column=cell_y + a, value=list_new[a]) \n",
"\n",
" list_new = json.loads(ALL_DATA_code[i]['formData']['textField_ldo3qxaq'].replace(\"'\", '\"'))\n",
" for a in range(0,len(list_new)):\n",
" sheet.cell(row=cell_x + 2, column=cell_y + a, value=list_new[a]) \n",
"\n",
" chinese_str = ALL_DATA_code[i]['formData']['textField_ldo3qxar'].encode('utf-8').decode('unicode_escape')\n",
" try:\n",
" list_y = 0\n",
" for b in json.loads(chinese_str):\n",
" for key, value in json.loads(chinese_str)[b].items():\n",
" sheet.cell(row=cell_x + int(key), column=cell_y + list_y, value=value) \n",
" list_y = list_y + 1\n",
" list_x = 15\n",
" except:\n",
" sheet.cell(row=cell_x + 3, column=cell_y, value=\"原始数据格式有误,无法转换!\") \n",
" list_x = 6\n",
"\n",
" cell_x = cell_x + cell_y + list_x\n",
"# 保存文件\n",
"wb.save(r'C:\\Users\\admin\\Desktop\\Python脚本\\图形界面自动化脚本\\其它系统脚本\\输出文件.xlsx')"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"40"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"PAGES"
]
},
{
"cell_type": "code",
"execution_count": 171,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1\n",
"{'result': 'FINST-BTA66F71JGVAFG3FBVZGD4ORMSPB3YTUWQSHLM62'}\n"
]
}
],
"source": [
"# 基础函数配置\n",
"import pandas as pd\n",
"import requests\n",
"from pathlib import Path\n",
"from urllib.parse import quote\n",
"import json\n",
"import numpy as np\n",
"import time\n",
"import openpyxl\n",
"from datetime import datetime\n",
"\n",
"ROOT = Path('.').absolute() # 当前工作目录\n",
"\n",
"def generateToken() -> str:\n",
" \"\"\" 生成 token \"\"\"\n",
"\n",
" token_api = 'https://api.dingtalk.com/v1.0/oauth2/accessToken'\n",
"\n",
" # 该信息在钉钉开放应用中\n",
" data = {\n",
" \"appKey\": \"ding5kqocon5s9oph5uq\",\n",
" \"appSecret\": 'HL1jgsIIfLAC0eTH0A1m4mwxUDqbgsiPeCCGGE3ocM6qJBTIW7Ivt9drxF_Z4Kb_'\n",
" }\n",
"\n",
" res = requests.post(token_api, json=data)\n",
" token = res.json()['accessToken']\n",
"\n",
" return token\n",
"def read_instances(token, formUuid, page, n):\n",
" \"\"\" 函数功能:读取普通表单的所有数据 \"\"\"\n",
"\n",
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances/search'\n",
"\n",
" headers = {\n",
" \"Content-Type\": \"application/json\",\n",
" \"x-acs-dingtalk-access-token\": token\n",
" }\n",
"\n",
" formData = {\n",
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
" \"userId\" : \"yida_pub_account\",\n",
" \"language\" : \"zh_CN\",\n",
" \"formUuid\" : formUuid,\n",
" \"currentPage\" : page,\n",
" \"pageSize\" : n\n",
" }\n",
"\n",
" res = requests.post(api, headers=headers, json=formData)\n",
" return res.json()\n",
"\n",
"def update_instances(TOKEN, processInstanceId):\n",
" \"\"\" 更新表单实例 \"\"\"\n",
"\n",
" api = f'https://api.dingtalk.com//v1.0/yida/forms/instances'\n",
"\n",
" headers = {\n",
" \"Content-Type\": \"application/json\",\n",
" \"x-acs-dingtalk-access-token\": TOKEN\n",
" }\n",
"\n",
" data_new= {\n",
" 'selectField_ldo3qxal' : \"删除\" # 对应关系性质\n",
" }\n",
"\n",
" payload = {\n",
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
" \"userId\" : \"yida_pub_account\",\n",
" \"language\" : \"zh_CN\",\n",
" \"formInstanceId\" : processInstanceId,\n",
" \"useLatestVersion\" : 'false',\n",
" \"updateFormDataJson\" : json.dumps(data_new, cls=NpEncoder) #json.dumps(data_new, cls=NpEncoder)\n",
" }\n",
"\n",
" res = requests.put(api, headers=headers,json =payload)\n",
" print(\"修改成功!\")\n",
"\n",
" return res.json()\n",
"\n",
"def read_new(FORMID,formData):\n",
" \"\"\" 通过实例id 新增普通表单实例 \"\"\"\n",
" api = f'https://api.dingtalk.com/v1.0/yida/forms/instances'\n",
"\n",
" headers = {\n",
" \"Content-Type\": \"application/json\",\n",
" \"x-acs-dingtalk-access-token\": TOKEN\n",
" }\n",
" payload = {\n",
" \"formUuid\" : FORMID,\n",
" \"appType\" : \"APP_TNVBVZ3K8G56HG03Z45Q\",\n",
" \"formDataJson\" : json.dumps(formData, cls=NpEncoder),\n",
" \"systemToken\" : \"CH7669818R0WN18TYTYJ42PE6GY22WZN0BYWKD1\",\n",
" \"language\" : \"zh_CN\",\n",
" \"userId\" : \"yida_pub_account\"\n",
" }\n",
"\n",
" res = requests.post(api, headers=headers, json=payload)\n",
" print(res.json())\n",
"\n",
" return res.json()\n",
"\n",
"class NpEncoder(json.JSONEncoder):\n",
" def default(self, obj):\n",
" if isinstance(obj, np.integer):\n",
" return int(obj)\n",
" elif isinstance(obj, np.floating):\n",
" return float(obj)\n",
" elif isinstance(obj, np.ndarray):\n",
" return obj.tolist()\n",
" else:\n",
" return super(NpEncoder, self).default(obj)\n",
" \n",
"df_data = pd.read_excel(r'C:\\Users\\admin\\Desktop\\Python脚本\\图形界面自动化脚本\\其它系统脚本\\输出文件.xlsx',dtype='string')\n",
"df_data = df_data.astype('string')\n",
"df_data.fillna('', inplace=True)\n",
"TOKEN = generateToken()\n",
"for i in range(0,len(df_data)):\n",
" if df_data.iloc[i,10] == \"删除\":\n",
" update_instances(TOKEN, df_data.iloc[i,9]) \n",
"for i in range(0,len(df_data)):\n",
" if df_data.iloc[i,11] == \"新增\":\n",
" list_new = list(filter(lambda s: not s.startswith('Unnamed'), df_data.iloc[i + 1,:].fillna('').map(str).str.strip().values))[:len(df_data.iloc[i + 1,:].dropna())]\n",
" while list_new[-1] == '':\n",
" list_new.pop()\n",
" list_new2 = list(filter(lambda s: not s.startswith('Unnamed'), df_data.iloc[i + 2,:].fillna('').map(str).str.strip().values))[:len(df_data.iloc[i + 2,:].dropna())]\n",
" while list_new2[-1] == '':\n",
" list_new2.pop()\n",
" \n",
" formData = {\n",
" 'selectField_ldo3qxal':'公有',# 对应关系性质\n",
" 'textField_ldo3qxam':'数据支持',# 提交人员\n",
" 'textField_ldo3qxan':'默认',# 对应关系名称\n",
" 'textField_ldo3qxao':df_data.iloc[i,1],# 数据类型\n",
" 'textField_ldo3qxap':list_new,# 原始数据列\n",
" 'textField_ldo3qxaq':list_new2,# 对应关系\n",
" }\n",
" print(\"1\")\n",
" read_new(FORMID,formData)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"df_data.loc[0:2]"
]
},
{
"cell_type": "code",
"execution_count": 153,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Unnamed: 0 发卡日期\n",
"Unnamed: 1 卡号\n",
"Unnamed: 2 车牌号\n",
"Unnamed: 3 姓名\n",
"Unnamed: 4 手机号\n",
"Unnamed: 5 卡名称(类型)\n",
"Unnamed: 6 剩余金额\n",
"Unnamed: 7 \n",
"Unnamed: 8 \n",
"Unnamed: 9 \n",
"Unnamed: 10 \n",
"Unnamed: 11 \n",
"Name: 1, dtype: string"
]
},
"execution_count": 153,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_data.iloc[1,:]"
]
},
{
"cell_type": "code",
"execution_count": 159,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['发卡日期', '卡号', '车牌号', '姓名', '手机号', '卡名称(类型)', '剩余金额', '', '', '',\n",
" '', ''], dtype=object)"
]
},
"execution_count": 159,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_data.iloc[1,:].fillna('').map(str).str.strip().values"
]
},
{
"cell_type": "code",
"execution_count": 161,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'发卡日期卡号车牌号姓名手机号卡名称(类型)剩余金额'"
]
},
"execution_count": 161,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"''.join(filter(lambda s: not s.startswith('Unnamed'), df_data.iloc[1,:].fillna('').map(str).str.strip().values))"
]
},
{
"cell_type": "code",
"execution_count": 155,
"metadata": {},
"outputs": [],
"source": [
"def get_data_cols_raw(df, three=False,join=True):\n",
" \"\"\"\n",
" 函数功能:\n",
" 获取表格数据 中源数据的列名 \n",
" 输入:\n",
" df:表格数据\n",
" three: \n",
" False 表明不是统一格式的excel表格数据,\n",
" True 表明是统一格式的表格数据\n",
"\n",
" 输出:\n",
" 各个列名拼接在一起的 \"字符串\"\n",
" \"\"\"\n",
" if join:\n",
" if three:\n",
" return ''.join(filter(lambda s: not s.startswith('Unnamed'), df.fillna('').map(str).str.strip().values))\n",
" else:\n",
" return ''.join(filter(lambda s: not s.startswith('Unnamed'), df.columns.map(str).str.strip().values))\n",
" else:\n",
" if three:\n",
" return list(filter(lambda s: not s.startswith('Unnamed'), df.fillna('').map(str).str.strip().values))[:len(df.iloc[1].dropna())]\n",
" else:\n",
" return list(filter(lambda s: not s.startswith('Unnamed'), df.columns.map(str).str.strip().values))"
]
},
{
"cell_type": "code",
"execution_count": 169,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['售卡日期', '卡号', '绑定车牌号', '持卡人姓名', '持卡人手机号', '卡名称', '剩余实额']"
]
},
"execution_count": 169,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"list_new = list(filter(lambda s: not s.startswith('Unnamed'), df_data.iloc[2,:].fillna('').map(str).str.strip().values))[:len(df_data.iloc[2,:].dropna())]\n",
"while list_new[-1] == '':\n",
" list_new.pop()\n",
"list_new"
]
},
{
"cell_type": "code",
"execution_count": 156,
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'str' object has no attribute 'dropna'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-156-5ff2dbf1e51f>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mraw_data_cols2\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mget_data_cols_raw\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf_data\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mthree\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mjoin\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;31m# list\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[0mraw_data_cols2\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m<ipython-input-155-1cb52dd44851>\u001b[0m in \u001b[0;36mget_data_cols_raw\u001b[1;34m(df, three, join)\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 20\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mthree\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 21\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;32mlambda\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstartswith\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Unnamed'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfillna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m''\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstrip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;33m:\u001b[0m\u001b[0mlen\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdropna\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 22\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 23\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfilter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;32mlambda\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0ms\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstartswith\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Unnamed'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstrip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mAttributeError\u001b[0m: 'str' object has no attribute 'dropna'"
]
}
],
"source": [
"raw_data_cols2 = get_data_cols_raw(df_data.iloc[2,:], three=True,join=False) # list\n",
"raw_data_cols2"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"\n",
"\n",
"TOKEN = generateToken()\n",
"FORMID = \"FORM-JD8668C1CAC7X39ND7GNN4O8D2UA3L21P3ODL22\" # 对应关系维护\n",
"for i in range(0,len(data_F6)):\n",
" formData = {\n",
" \"textField_xgaye7b\":data_F6[\"date_fmt\"][i],\n",
" \"textField_5aunjjz\":data_F6[\"to_grant_employee_id\"][i],\n",
" \"employeeField_lft1hn2e\":[v['formData']['textField_lfrw3u59'] for v in ALL_DATA_staff if v['formData']['textField_lfrw3u58']== data_F6[\"to_grant_person\"][i]],\n",
" \"employeeField_lft1hn2f\":[v['formData']['textField_lfrw3u59'] for v in ALL_DATA_staff if v['formData']['textField_lfrw3u58']== data_F6[\"area_manager\"][i]],\n",
" }\n",
" read_new(FORMID,formData)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "F6processing",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.4"
},
"orig_nbformat": 4
},
"nbformat": 4,
"nbformat_minor": 2
}