From c3dd21c7ccccaba4075e4e65dec61e03a8c95d4c Mon Sep 17 00:00:00 2001 From: Floke Date: Fri, 1 Aug 2025 11:38:00 +0000 Subject: [PATCH] google_sheet_handler.py aktualisiert --- google_sheet_handler.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/google_sheet_handler.py b/google_sheet_handler.py index 84ccf5f8..a08c2b2f 100644 --- a/google_sheet_handler.py +++ b/google_sheet_handler.py @@ -62,12 +62,28 @@ class GoogleSheetHandler: return self._all_data_with_headers.copy() def get_sheet_as_dataframe(self, sheet_name): + """ + Liest ein komplettes Tabellenblatt und gibt es als Pandas DataFrame zurück. + NEU: Funktioniert auch, wenn die Header-Zeile doppelte Spaltennamen enthält. + """ try: if not self.client and not self._connect(): return None + + self.logger.debug(f"Lese Tabellenblatt '{sheet_name}' als DataFrame...") worksheet = self.client.open_by_url(self.sheet_url).worksheet(sheet_name) - # KORRIGIERTE ZEILE - data = worksheet.get_all_records() - df = pd.DataFrame(data) + + # Lese alle Werte als Liste von Listen, das ist robuster + all_values = worksheet.get_all_values() + + if not all_values: + self.logger.warning(f"Tabellenblatt '{sheet_name}' ist leer. Erstelle leeren DataFrame.") + return pd.DataFrame() + + # Nimm die erste Zeile als Header und die restlichen als Daten + header = all_values[0] + data = all_values[1:] + + df = pd.DataFrame(data, columns=header) self.logger.info(f"{len(df)} Zeilen aus '{sheet_name}' als DataFrame geladen.") return df except gspread.exceptions.WorksheetNotFound: