{ "cells": [ { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "读取到 对应关系维护表中 2347 条数据!\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ ":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\u001b[0m in \u001b[0;36m\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\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 }