diff --git a/list_generator.py b/list_generator.py index bf81301f..27820f36 100644 --- a/list_generator.py +++ b/list_generator.py @@ -76,15 +76,12 @@ def create_google_doc_from_csv(service): print("Keine Daten aus der CSV-Datei geladen.") return None - # Kinder innerhalb jeder Gruppe sortieren - for gruppe_key in kinder_nach_gruppen: # Geändert von 'gruppe' zu 'gruppe_key' um Verwechslung zu vermeiden + for gruppe_key in kinder_nach_gruppen: kinder_nach_gruppen[gruppe_key].sort(key=lambda x: (x['Nachname'].lower(), x['Vorname'].lower())) - # ***** KORREKTUR HIER: sorted_gruppen_namen definieren ***** sorted_gruppen_namen = sorted(kinder_nach_gruppen.keys()) stand_zeit = datetime.now().strftime("%d.%m.%Y %H:%M Uhr") - # 1. Neues Google Doc erstellen try: doc_body = {'title': GOOGLE_DOC_TITLE} doc = service.documents().create(body=doc_body).execute() @@ -94,31 +91,35 @@ def create_google_doc_from_csv(service): except HttpError as err: print(f"Fehler beim Erstellen des Google Dokuments: {err}") return None + # --- BIS HIER BLEIBT ALLES WIE ZUVOR --- requests = [] for i, gruppe_original in enumerate(sorted_gruppen_namen): - # ... (kinder_liste, anzahl_kinder, gruppe_display_name) ... + # ***** KORREKTUR: Definitionen hierher verschieben ***** + kinder_liste = kinder_nach_gruppen[gruppe_original] + anzahl_kinder = len(kinder_liste) + gruppe_display_name = gruppe_original + GRUPPENNAME_SUFFIX + # ***** ENDE KORREKTUR ***** # --- Seiten-Header --- header_text_for_page = ( f"{EINRICHTUNG}\t\t\t{FOTOGRAF_NAME}\n" f"{FOTODATUM}\n\n" ) - if i == 0: # Nur für die allererste Seite einen expliziten Index + if i == 0: requests.append({'insertText': {'location': {'index': 1}, 'text': header_text_for_page}}) - else: # Für Folgeseiten nach einem PageBreak + else: requests.append({'insertText': {'endOfSegmentLocation': {}, 'text': header_text_for_page}}) # --- Tabelle --- + # Jetzt ist kinder_liste definiert num_rows_for_table = len(kinder_liste) + 1 num_cols_for_table = 3 - # Tabelle wird nach dem Header eingefügt. - # Wenn Header mit EOS eingefügt wurde, wird Tabelle auch mit EOS eingefügt. requests.append({ 'insertTable': { - 'endOfSegmentLocation': {}, # Fügt Tabelle am aktuellen Ende an + 'endOfSegmentLocation': {}, 'rows': num_rows_for_table, 'columns': num_cols_for_table } @@ -126,12 +127,11 @@ def create_google_doc_from_csv(service): table_text_content = [] table_text_content.append("Nachname\tVorname\tGruppe") - for kind in kinder_liste: + # Jetzt ist kinder_liste definiert + for kind in kinder_liste: table_text_content.append(f"{kind['Nachname']}\t{kind['Vorname']}\t{gruppe_display_name}") full_table_text = "\n".join(table_text_content) + "\n" - # Füge den gesamten Tabelleninhalt ein. - # Dies sollte in die zuletzt mit EOS erstellte Tabelle gehen. requests.append({ 'insertText': { 'endOfSegmentLocation': {}, @@ -140,6 +140,7 @@ def create_google_doc_from_csv(service): }) # --- Footer --- + # Jetzt ist anzahl_kinder definiert footer_text_for_page = ( f"\n{anzahl_kinder} angemeldete Kinder\n\n" "Dies ist die Liste der bereits angemeldeten Kinder. Bitte die Eltern der noch fehlenden\n" @@ -158,15 +159,11 @@ def create_google_doc_from_csv(service): if i < len(sorted_gruppen_namen) - 1: requests.append({'insertPageBreak': {'endOfSegmentLocation': {}}}) - # Batch-Update ausführen + # Batch-Update ausführen (Rest bleibt gleich) if requests: try: print("Sende Batch Update an Google Docs API...") print("Anzahl der Requests:", len(requests)) - # Debug: Gib die ersten paar Requests aus, um zu sehen, ob sie logisch aussehen - # for req_idx, req_content in enumerate(requests[:6]): - # print(f"Request [{req_idx}]: {req_content}") - service.documents().batchUpdate( documentId=document_id, body={'requests': requests} ).execute() @@ -181,10 +178,6 @@ def create_google_doc_from_csv(service): error_details = f"Fehler beim Dekodieren der Fehlerdetails: {e_decode}" print(f"Details zum Fehler ({err.resp.status} {err._get_reason()}): {error_details}") - # Wenn es immer noch schiefgeht, alle Requests ausgeben: - # print("Alle gesendeten Requests:") - # for req_idx, req_content in enumerate(requests): - # print(f"Request [{req_idx}]: {req_content}") return document_id