google_sheet_handler.py aktualisiert
This commit is contained in:
@@ -62,12 +62,28 @@ class GoogleSheetHandler:
|
|||||||
return self._all_data_with_headers.copy()
|
return self._all_data_with_headers.copy()
|
||||||
|
|
||||||
def get_sheet_as_dataframe(self, sheet_name):
|
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:
|
try:
|
||||||
if not self.client and not self._connect(): return None
|
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)
|
worksheet = self.client.open_by_url(self.sheet_url).worksheet(sheet_name)
|
||||||
# KORRIGIERTE ZEILE
|
|
||||||
data = worksheet.get_all_records()
|
# Lese alle Werte als Liste von Listen, das ist robuster
|
||||||
df = pd.DataFrame(data)
|
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.")
|
self.logger.info(f"{len(df)} Zeilen aus '{sheet_name}' als DataFrame geladen.")
|
||||||
return df
|
return df
|
||||||
except gspread.exceptions.WorksheetNotFound:
|
except gspread.exceptions.WorksheetNotFound:
|
||||||
|
|||||||
Reference in New Issue
Block a user