google_sheet_handler.py aktualisiert
This commit is contained in:
@@ -86,51 +86,38 @@ class GoogleSheetHandler:
|
|||||||
self._all_data = self.sheet.get_all_values()
|
self._all_data = self.sheet.get_all_values()
|
||||||
|
|
||||||
if not self._all_data:
|
if not self._all_data:
|
||||||
self.logger.warning("Google Sheet scheint leer zu sein oder get_all_values() lieferte keine Daten.")
|
self.logger.warning("Google Sheet scheint leer zu sein.")
|
||||||
self.headers = []
|
self.headers = []
|
||||||
return True # Kein Fehler, nur keine Daten
|
return True
|
||||||
|
|
||||||
num_rows = len(self._all_data)
|
num_rows = len(self._all_data)
|
||||||
num_cols = len(self._all_data[0]) if num_rows > 0 else 0
|
num_cols = len(self._all_data[0]) if num_rows > 0 else 0
|
||||||
self.logger.info(f"Daten neu geladen: {num_rows} Zeilen, {num_cols} Spalten.")
|
self.logger.info(f"Daten neu geladen: {num_rows} Zeilen, {num_cols} Spalten.")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# KORREKTUR: Extrahiere die 'index'-Werte und finde das Maximum davon.
|
|
||||||
all_indices = [v['index'] for v in COLUMN_MAP.values()]
|
all_indices = [v['index'] for v in COLUMN_MAP.values()]
|
||||||
if not all_indices:
|
if not all_indices: raise ValueError("COLUMN_MAP leer")
|
||||||
raise ValueError("COLUMN_MAP enthält keine Indizes.")
|
|
||||||
|
|
||||||
max_col_idx_in_map = max(all_indices)
|
max_col_idx_in_map = max(all_indices)
|
||||||
|
|
||||||
# Die Anzahl der Spalten im Sheet muss mindestens so groß sein wie der höchste Index + 1
|
|
||||||
expected_min_cols = max_col_idx_in_map + 1
|
expected_min_cols = max_col_idx_in_map + 1
|
||||||
if num_cols < expected_min_cols:
|
if num_cols < expected_min_cols:
|
||||||
self.logger.warning(
|
self.logger.warning(
|
||||||
f"Geladenes Sheet hat nur {num_cols} Spalten, aber COLUMN_MAP definiert Spalten bis Index "
|
f"Sheet hat nur {num_cols} Spalten, aber COLUMN_MAP erwartet mind. {expected_min_cols}.")
|
||||||
f"{max_col_idx_in_map} (erwartet mind. {expected_min_cols} Spalten)."
|
|
||||||
)
|
|
||||||
except (ValueError, KeyError) as e:
|
|
||||||
self.logger.warning(f"COLUMN_MAP scheint leer oder fehlerhaft zu sein. Kann Spaltenanzahl nicht pruefen. Fehler: {e}")
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.logger.error(f"Unerwarteter Fehler bei der Pruefung der Spaltenanzahl gegen COLUMN_MAP: {e}")
|
self.logger.error(f"Fehler bei der Pruefung der Spaltenanzahl: {e}")
|
||||||
|
|
||||||
# Finde die Header-Zeilen (Annahme: die erste Zeile mit "CRM Name" drin)
|
|
||||||
self._header_rows = 5 # Standardwert
|
|
||||||
for i, row in enumerate(self._all_data):
|
for i, row in enumerate(self._all_data):
|
||||||
if "CRM Name" in row:
|
if "CRM Name" in row:
|
||||||
# Wir nehmen an, dass die Zeile VOR den Headern die Spaltenbuchstaben enthält
|
self._header_rows = i + 1
|
||||||
self._header_rows = i
|
self.headers = row
|
||||||
self.headers = self._all_data[self._header_rows]
|
|
||||||
break
|
break
|
||||||
else: # Falls "CRM Name" nicht gefunden wird
|
else:
|
||||||
self.headers = self._all_data[0] if self._all_data else []
|
self.headers = self._all_data[0] if self._all_data else []
|
||||||
|
|
||||||
|
|
||||||
return True
|
return True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.logger.error(f"Allgemeiner Fehler beim Laden der Google Sheet Daten: {type(e).__name__} - {e}")
|
self.logger.critical(f"Allgemeiner Fehler beim Laden der Google Sheet Daten: {e}", exc_info=True)
|
||||||
self.logger.debug(traceback.format_exc())
|
return False
|
||||||
raise e
|
|
||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user