This commit is contained in:
2025-05-26 18:33:06 +00:00
parent 14b2657cd8
commit 1d53108771

View File

@@ -76,15 +76,12 @@ def create_google_doc_from_csv(service):
print("Keine Daten aus der CSV-Datei geladen.") print("Keine Daten aus der CSV-Datei geladen.")
return None return None
# Kinder innerhalb jeder Gruppe sortieren for gruppe_key in kinder_nach_gruppen:
for gruppe_key in kinder_nach_gruppen: # Geändert von 'gruppe' zu 'gruppe_key' um Verwechslung zu vermeiden
kinder_nach_gruppen[gruppe_key].sort(key=lambda x: (x['Nachname'].lower(), x['Vorname'].lower())) 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()) sorted_gruppen_namen = sorted(kinder_nach_gruppen.keys())
stand_zeit = datetime.now().strftime("%d.%m.%Y %H:%M Uhr") stand_zeit = datetime.now().strftime("%d.%m.%Y %H:%M Uhr")
# 1. Neues Google Doc erstellen
try: try:
doc_body = {'title': GOOGLE_DOC_TITLE} doc_body = {'title': GOOGLE_DOC_TITLE}
doc = service.documents().create(body=doc_body).execute() doc = service.documents().create(body=doc_body).execute()
@@ -94,31 +91,35 @@ def create_google_doc_from_csv(service):
except HttpError as err: except HttpError as err:
print(f"Fehler beim Erstellen des Google Dokuments: {err}") print(f"Fehler beim Erstellen des Google Dokuments: {err}")
return None return None
# --- BIS HIER BLEIBT ALLES WIE ZUVOR ---
requests = [] requests = []
for i, gruppe_original in enumerate(sorted_gruppen_namen): 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 --- # --- Seiten-Header ---
header_text_for_page = ( header_text_for_page = (
f"{EINRICHTUNG}\t\t\t{FOTOGRAF_NAME}\n" f"{EINRICHTUNG}\t\t\t{FOTOGRAF_NAME}\n"
f"{FOTODATUM}\n\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}}) 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}}) requests.append({'insertText': {'endOfSegmentLocation': {}, 'text': header_text_for_page}})
# --- Tabelle --- # --- Tabelle ---
# Jetzt ist kinder_liste definiert
num_rows_for_table = len(kinder_liste) + 1 num_rows_for_table = len(kinder_liste) + 1
num_cols_for_table = 3 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({ requests.append({
'insertTable': { 'insertTable': {
'endOfSegmentLocation': {}, # Fügt Tabelle am aktuellen Ende an 'endOfSegmentLocation': {},
'rows': num_rows_for_table, 'rows': num_rows_for_table,
'columns': num_cols_for_table 'columns': num_cols_for_table
} }
@@ -126,12 +127,11 @@ def create_google_doc_from_csv(service):
table_text_content = [] table_text_content = []
table_text_content.append("Nachname\tVorname\tGruppe") table_text_content.append("Nachname\tVorname\tGruppe")
# Jetzt ist kinder_liste definiert
for kind in kinder_liste: for kind in kinder_liste:
table_text_content.append(f"{kind['Nachname']}\t{kind['Vorname']}\t{gruppe_display_name}") table_text_content.append(f"{kind['Nachname']}\t{kind['Vorname']}\t{gruppe_display_name}")
full_table_text = "\n".join(table_text_content) + "\n" 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({ requests.append({
'insertText': { 'insertText': {
'endOfSegmentLocation': {}, 'endOfSegmentLocation': {},
@@ -140,6 +140,7 @@ def create_google_doc_from_csv(service):
}) })
# --- Footer --- # --- Footer ---
# Jetzt ist anzahl_kinder definiert
footer_text_for_page = ( footer_text_for_page = (
f"\n{anzahl_kinder} angemeldete Kinder\n\n" f"\n{anzahl_kinder} angemeldete Kinder\n\n"
"Dies ist die Liste der bereits angemeldeten Kinder. Bitte die Eltern der noch fehlenden\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: if i < len(sorted_gruppen_namen) - 1:
requests.append({'insertPageBreak': {'endOfSegmentLocation': {}}}) requests.append({'insertPageBreak': {'endOfSegmentLocation': {}}})
# Batch-Update ausführen # Batch-Update ausführen (Rest bleibt gleich)
if requests: if requests:
try: try:
print("Sende Batch Update an Google Docs API...") print("Sende Batch Update an Google Docs API...")
print("Anzahl der Requests:", len(requests)) 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( service.documents().batchUpdate(
documentId=document_id, body={'requests': requests} documentId=document_id, body={'requests': requests}
).execute() ).execute()
@@ -181,10 +178,6 @@ def create_google_doc_from_csv(service):
error_details = f"Fehler beim Dekodieren der Fehlerdetails: {e_decode}" error_details = f"Fehler beim Dekodieren der Fehlerdetails: {e_decode}"
print(f"Details zum Fehler ({err.resp.status} {err._get_reason()}): {error_details}") 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 return document_id