From 504ba1f29bf2f2f5c5058219af58b30b36c9a1b6 Mon Sep 17 00:00:00 2001 From: Floke Date: Tue, 22 Jul 2025 05:12:40 +0000 Subject: [PATCH] Neue Funktion zum Schreiben Marketing Automations Texte --- google_sheet_handler.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/google_sheet_handler.py b/google_sheet_handler.py index f581b598..e8e7682e 100644 --- a/google_sheet_handler.py +++ b/google_sheet_handler.py @@ -216,6 +216,42 @@ class GoogleSheetHandler: ) return last_data_index + def clear_and_write_data(self, sheet_name, data): + """ + Leert das angegebene Tabellenblatt vollständig und schreibt neue Daten hinein. + Die Daten sollten eine Liste von Listen sein (inklusive Header). + """ + try: + self.logger.info(f"Greife auf Tabellenblatt '{sheet_name}' zu, um es zu leeren und neu zu beschreiben...") + worksheet = self.client.open_by_url(self.sheet_url).worksheet(sheet_name) + + self.logger.debug("Leere das gesamte Tabellenblatt...") + worksheet.clear() + + num_rows = len(data) + num_cols = len(data[0]) if data else 0 + + if num_rows == 0: + self.logger.warning("Keine Daten zum Schreiben vorhanden.") + return True + + self.logger.info(f"Schreibe {num_rows - 1} neue Datenzeilen (insgesamt {num_rows} Zeilen mit Header) in '{sheet_name}'...") + + # Setze den Range auf A1 bis zur maximal benötigten Größe + end_col_letter = self._get_col_letter(num_cols) + range_to_update = f'A1:{end_col_letter}{num_rows}' + + worksheet.update(range_name=range_to_update, values=data) + self.logger.info(f"Schreiben in Tabellenblatt '{sheet_name}' erfolgreich abgeschlossen.") + return True + except gspread.exceptions.WorksheetNotFound: + self.logger.error(f"FATAL: Das Tabellenblatt '{sheet_name}' wurde nicht gefunden. Bitte prüfen Sie den Namen.") + return False + except Exception as e: + self.logger.error(f"FATAL: Ein unerwarteter Fehler ist beim Schreiben in '{sheet_name}' aufgetreten: {e}") + return False + + @retry_on_failure def batch_update_cells(self, update_data): """