阅读量 : 2180
#!/usr/bin/env python3 # -*- coding: utf-8 -*-cmd /k cd "d:\g\edu\pet3" & python "$(FILE_NAME)"& ECHO. & PAUSE & EXIT from openpyxl import load_workbook import os,openpyxl,json,wget from shipping_label import is_Residential,Estimate_Rate,create_domestic_label #这个文件存了key需要的请与 微信15859230935管理员联系 # 以下存产品的重量尺寸json数据,开单时自动取数 sku_size="""{ "LegoyoWhite-1":{"length":"1","width":"1","height":"1","distanceUnit": "in","weight":"2","massUnit": "OZ"} }""" # 模版文件名请用PO_Data 开头,系统自动搜索 for file in os.listdir("./"): if file[0:7]=="PO_Data": wb = load_workbook(file) break sheet = wb["PO Details"] #表头序号配对,excel 表头有这几列就可以批量自动生成标签了 for i in range(sheet.max_column): i+=1 if sheet.cell(row=1,column=i).value=="Customer Name": customer_name=i if sheet.cell(row=1,column=i).value=="Ship to Address 1": Ship_to_Address_1=i if sheet.cell(row=1,column=i).value=="Ship to Address 2": Ship_to_Address_2=i if sheet.cell(row=1,column=i).value=="City": get_city=i if sheet.cell(row=1,column=i).value=="State": state=i if sheet.cell(row=1,column=i).value=="Zip": zip=i if sheet.cell(row=1,column=i).value=="Customer Phone Number": Customer_Phone_Number=i if sheet.cell(row=1,column=i).value=="SKU": SKU=i if sheet.cell(row=1,column=i).value=="Qty": QTY=i if sheet.cell(row=1,column=i).value=="Update Status": Update_Status=i if sheet.cell(row=1,column=i).value=="Update Qty": Update_Qty=i if sheet.cell(row=1,column=i).value=="Carrier": Carrier=i if sheet.cell(row=1,column=i).value=="Tracking Number": Tracking_Number=i #发货地址json数据 from_address=''' "from": { "personName": "Uyou_legoyo", "countryCode": "US", "phone": "9738943479", "stateCode": "NJ", "city": "Passaic", "addressLine1": "90 Dayton AVE", "addressLine2": "Gate A Building 18 i", "zipCode": "07055" } ''' max_column=sheet.max_column for i in range(sheet.max_row-1): download_file_name=str(i+1)+'_'+str(sheet.cell(row=i+2,column=SKU).value)+".pdf" if os.path.isfile(download_file_name): continue to_address='{"personName": "'+str(sheet.cell(row=i+2,column=customer_name).value)+'","countryCode":"US","phone": "'+str(sheet.cell(row=i+2,column=Customer_Phone_Number).value)+'","stateCode":"'+str(sheet.cell(row=i+2,column=state).value)+'","city":"'+str(sheet.cell(row=i+2,column=get_city).value)+'","addressLine1":"'+str(sheet.cell(row=i+2,column=Ship_to_Address_1).value)+'","addressLine2":"'+str(sheet.cell(row=i+2,column=Ship_to_Address_2).value)+'","zipCode":"'+str(sheet.cell(row=i+2,column=zip).value)+'"}' #print(to_address) if str(sheet.cell(row=i+2,column=SKU).value)[0:6]=='Legoyo': parcels='"labelSize":1,"isTest": false,"parcels": [{"packageNum": 1,"length": "' temp1=str(sheet.cell(row=i+2,column=SKU).value) extra=',"extra": {"reference": "'+temp1[0:len(temp1)-2]+" QTY "+str(int(temp1[len(temp1)-1])*int(sheet.cell(row=i+2,column=QTY).value))+'"},' else: extra=',"extra": {"reference": "'+str(sheet.cell(row=i+2,column=SKU).value)+' QTY 1"},' parcels='"labelSize":1,"isTest": false,"parcels": [{"packageNum":'+str(sheet.cell(row=i+2,column=QTY).value)+',"length": "' #包裹尺寸 sku_size1=json.loads(sku_size) if sku_size1[str(sheet.cell(row=i+2,column=SKU).value)]: get_sku_size=sku_size1[str(sheet.cell(row=i+2,column=SKU).value)] parcels=parcels+str(int(get_sku_size['length']))#长 parcels=parcels+'","width": "'+str(int(get_sku_size['width']))#宽 parcels=parcels+'","height": "'+str(int(get_sku_size['height']))+'","distanceUnit": "in","weight": "'#高 if get_sku_size['massUnit']=='LB': parcels=parcels+str(int(get_sku_size['weight']))+'","massUnit": "lb","packageCode": "your_package","extra": {"insurance": 0,"isCod": false,"codAmount": 0,"paymentMethod": "any","dryIceWeight": 0}}],' shipping_type=[ '"carrierCode": "usps","serviceCode": "usps_parcel_select"', '"carrierCode": "usps","serviceCode": "usps_priority"', '"carrierCode": "ups","serviceCode": "ups_ground"'] if is_Residential(to_address): shipping_type.append('"carrierCode": "fedex","serviceCode": "fedex_home_delivery"') to_address=to_address.replace('}',',')+'"isResidential": true}' else: shipping_type.append('"carrierCode": "fedex","serviceCode": "fedex_ground"') to_address=to_address.replace('}',',')+'"isResidential": false}' else: parcels=parcels+str(int(get_sku_size['weight'])*0.0625)+'","massUnit": "lb","packageCode": "your_package","extra": {"insurance": 0,"isCod": false,"codAmount": 0,"paymentMethod": "any","dryIceWeight": 0}}],' shipping_type=['"carrierCode": "usps","serviceCode": "usps_first"'] col=0 get_rate=10000.00 for ship_type in shipping_type: col+=1 shipping_address='{'+from_address+',"to": '+to_address+extra+parcels+ship_type+'}' #print (shipping_address) estimate_rate1,estimate_rate2=Estimate_Rate(shipping_address) if estimate_rate1==1: get_rate1=round(estimate_rate2,2) else: sheet.cell(row=(i+2),column=max_column+col,value=estimate_rate2) #print(estimate_rate2) break if get_rate1<get_rate: get_rate=get_rate1 get_shipping_address=shipping_address get_shipping_type=ship_type if get_rate<10000: #print(get_shipping_address) print(get_rate) get_status,a,b,c,d=create_domestic_label(get_shipping_address) if get_status==1: wget.download(c,download_file_name) tracking_number='' for b1 in b: tracking_number=tracking_number+b1+',' sheet.cell(row=(i+2),column=Update_Status,value='ship') sheet.cell(row=(i+2),column=Update_Qty,value=sheet.cell(row=(i+2),column=QTY).value) carrier=get_shipping_type.replace(':',',') carrier=carrier.replace('"','') carrier1=carrier.split(',') if carrier1[1].upper()=='FEDEX': carrier2='FedEx' else: carrier2=carrier1[1].upper() sheet.cell(row=(i+2),column=Carrier,value=carrier2) sheet.cell(row=(i+2),column=Tracking_Number,value=tracking_number[0:len(tracking_number)-1]) else: sheet.cell(row=(i+2),column=max_column+col,value=a) # if os.path.isfile("new_"+file): # print ('old file : '+"new_"+file+" will be removed!") # os.remove("new_"+file) wb.save(file) print("保存excel成功,第 "+str(i+1))