import gspread import csv import locale import datetime import yaml #TODO: Upload automatically! def export_timesheet(Csvexport_filename,Sum_col,Desc_col,Week,Bestellnummer,Bestellposition,Leistungszeilennummer,Kurztext,Leistungszeilentext,Username,Name,Kontierung,Ansprechpartner_username,Ansprechpartner_name): with open(f"{Csvexport_filename}.csv", 'w') as file: writer = csv.writer(file, delimiter=';', lineterminator="\n") writer.writerow(["Bestellnummer","Bestellpositionsnr","Leistungszeilennummer","Kurztext","Leistungszeilentext","Username","Name","Arbeitstag","Stunden","Beschreibung","Kontierung","Ansprechpartner Username","Ansprechpartner","Status"]) # iterate for time_entry in list_of_dicts: if time_entry.get(Sum_col) and time_entry.get(Desc_col) and time_entry.get("week"): if (int(time_entry.get("week")) in week) or week is None: #if week == int(time_entry.get("week")) or week is None: date_str_de_DE = time_entry.get("date") datetime_object = datetime.datetime.strptime(date_str_de_DE, '%a., %d. %B %Y') if Kontierung == '': SubKontierung = time_entry.get("pos_service").split("-")[1] writer.writerow([Bestellnummer,Bestellposition,Leistungszeilennummer,Kurztext,Leistungszeilentext,Username,Name,datetime_object.strftime('%d.%m.%Y'),time_entry.get(Sum_col),time_entry.get(Desc_col),SubKontierung,Ansprechpartner_username,Ansprechpartner_name,"OFFEN"]) else: writer.writerow([Bestellnummer,Bestellposition,Leistungszeilennummer,Kurztext,Leistungszeilentext,Username,Name,datetime_object.strftime('%d.%m.%Y'),time_entry.get(Sum_col),time_entry.get(Desc_col),Kontierung,Ansprechpartner_username,Ansprechpartner_name,"OFFEN"]) locale.setlocale(locale.LC_ALL, 'de_DE') with open("config.yaml", encoding='utf8') as f: cfg = yaml.load(f, Loader=yaml.FullLoader) gc = gspread.service_account() sh = gc.open(cfg['spreadsheet_name']) worksheet = sh.worksheet(cfg['worksheet_name']) week = cfg['week'] # 10, 11, 12 or None username = cfg['username'] name = cfg['name'] ansprechpartner_username = cfg['ansprechpartner_username'] ansprechpartner_name = cfg['ansprechpartner_name'] # read the whole sheet list_of_dicts = worksheet.get_all_records(numericise_ignore=['all']) for key in ["wgwr3", "wgwr_service", "dkarb", "bauwb", "service"]: elsap_id = list_of_dicts[2].get(f"sum_{key}") if elsap_id != "": # elsap_id = worksheet.acell('H3').value #'2061818_00030_0000000020' csvexport_filename = f"{datetime.date.today().strftime('%Y_%m')}_01_{elsap_id}_{username}" export_timesheet(Csvexport_filename=csvexport_filename, Sum_col=f"sum_{key}", Desc_col=f"desc_{key}", Week=week, Bestellnummer=elsap_id.split('_')[0], Bestellposition=elsap_id.split('_')[1], Leistungszeilennummer=elsap_id.split('_')[2], Kurztext=list_of_dicts[1].get(f"sum_{key}"), Leistungszeilentext=list_of_dicts[3].get(f"sum_{key}"), Username=username, Name=name, Kontierung=list_of_dicts[4].get(f"sum_{key}"), Ansprechpartner_username=ansprechpartner_username, Ansprechpartner_name=ansprechpartner_name)