This commit is contained in:
2025-05-26 18:33:06 +00:00
parent 70c7b84403
commit 21629bfa54

View File

@@ -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