diff --git a/google_sheet_handler.py b/google_sheet_handler.py index 35e2708d..8d0c2864 100644 --- a/google_sheet_handler.py +++ b/google_sheet_handler.py @@ -272,7 +272,40 @@ class GoogleSheetHandler: except Exception as e: self.logger.error(f"FATAL: Ein unerwarteter Fehler ist beim Schreiben in '{sheet_name}' aufgetreten: {e}") return False + + def get_sheet_as_dataframe(self, sheet_name): + """Liest ein komplettes Tabellenblatt und gibt es als Pandas DataFrame zurück.""" + try: + if not self.client: + if not self._connect(): return None + logging.debug(f"Lese Tabellenblatt '{sheet_name}' als DataFrame...") + worksheet = self.client.open_by_url(self.sheet_url).worksheet(sheet_name) + data = worksheet.get_all_records() + df = pd.DataFrame(data) + logging.info(f"{len(df)} Zeilen aus '{sheet_name}' als DataFrame geladen.") + return df + except gspread.exceptions.WorksheetNotFound: + logging.warning(f"Tabellenblatt '{sheet_name}' nicht gefunden. Gehe davon aus, dass es leer ist.") + return None + except Exception as e: + self.logger.error(f"Fehler beim Lesen des Sheets als DataFrame: {e}") + return None + + def append_rows(self, sheet_name, values): + """Hängt eine Liste von Zeilen an ein Tabellenblatt an.""" + try: + if not self.client: + if not self._connect(): return False + + logging.debug(f"Hänge {len(values)} Zeilen an das Tabellenblatt '{sheet_name}' an...") + worksheet = self.client.open_by_url(self.sheet_url).worksheet(sheet_name) + worksheet.append_rows(values, value_input_option='USER_ENTERED') + logging.info(f"{len(values)} Zeilen erfolgreich an '{sheet_name}' angehängt.") + return True + except Exception as e: + self.logger.error(f"Fehler beim Anhängen von Zeilen an das Sheet: {e}") + return False @retry_on_failure def batch_update_cells(self, update_data):