google_sheet_handler.py aktualisiert

This commit is contained in:
2025-07-20 05:07:03 +00:00
parent aeb5bb5ac1
commit 7a796c5460

View File

@@ -220,26 +220,48 @@ class GoogleSheetHandler:
def batch_update_cells(self, update_data):
"""
Fuehrt ein Batch-Update im Google Sheet durch.
Args:
update_data (list): Eine Liste von Dictionaries, jedes mit 'range' (str)
und 'values' (list of lists).
Returns:
bool: True bei Erfolg, False bei endgueltigem Fehler.
NEU: Konvertiert alle zu schreibenden Werte explizit in Strings, um Fehler zu vermeiden.
"""
if not self.sheet:
self.logger.error("FEHLER: Keine Sheet-Verbindung fuer Batch-Update.")
return False
if not update_data:
self.logger.debug("batch_update_cells: Keine Daten zum Aktualisieren erhalten.")
return True
try:
total_cells_to_update = sum(len(row) for item in update_data for row in item.get('values', []))
self.logger.debug(f" -> Versuche sheet.batch_update mit {len(update_data)} Anfragen ({total_cells_to_update} Zellen)...")
self.sheet.batch_update(update_data, value_input_option='USER_ENTERED')
# --- NEUE, ROBUSTE DATENAUFBEREITUNG ---
sanitized_update_data = []
for item in update_data:
if 'range' in item and 'values' in item and isinstance(item['values'], list):
# Konvertiere jeden einzelnen Zellwert im values-Array sicher in einen String
sanitized_values = [
[str(cell_value) if cell_value is not None else "" for cell_value in row]
for row in item['values']
]
sanitized_update_data.append({
'range': item['range'],
'values': sanitized_values
})
else:
self.logger.warning(f"Überspringe ungültiges Update-Objekt: {item}")
if not sanitized_update_data:
self.logger.warning("Keine gültigen Daten nach der Bereinigung für das Batch-Update übrig.")
return True
except Exception:
self.logger.error(f"Endgueltiger Fehler beim Batch-Update nach Retries. Kann {len(update_data)} Operationen nicht durchfuehren.")
try:
total_cells_to_update = sum(len(row) for item in sanitized_update_data for row in item.get('values', []))
self.logger.debug(f" -> Versuche sheet.batch_update mit {len(sanitized_update_data)} Anfragen ({total_cells_to_update} Zellen)...")
# Logge das erste Datenobjekt zur Überprüfung
if self.logger.level == logging.DEBUG and sanitized_update_data:
self.logger.debug(f" -> Beispiel-Update-Daten: {str(sanitized_update_data[0])}")
self.sheet.batch_update(sanitized_update_data, value_input_option='USER_ENTERED')
self.logger.info(f"Batch-Update mit {total_cells_to_update} Zellen erfolgreich gesendet.")
return True
except Exception as e:
self.logger.error(f"Endgueltiger Fehler beim Batch-Update nach Retries: {e}", exc_info=True)
return False
# --- END OF FILE google_sheet_handler.py ---