From 972cfacf9117d6310e894febc1219edbcfc7b8e2 Mon Sep 17 00:00:00 2001 From: Cal Corum Date: Fri, 6 Feb 2026 07:45:27 -0600 Subject: [PATCH] Raise exception on spreadsheet errors instead of silently skipping MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Problem:** The _is_spreadsheet_error() check was logging a warning and silently skipping rows with formula errors (#REF!, #N/A, etc.). This could lead to incomplete game data being submitted without the user knowing. **Solution:** Raise SheetsException immediately when spreadsheet errors are detected, providing: - Exact row number and field name - Actual error value found in the cell - Common error type explanations - Clear action required to fix **Impact:** - Users get immediate feedback about spreadsheet errors - No partial/incomplete data submitted to API - Clear instructions on what needs to be fixed - Better data integrity **Example Error Message:** ``` ❌ Spreadsheet Error Detected **Location:** Row 7, Column 'pitcher_id' **Value Found:** `#REF!` This cell contains a formula error that must be fixed before submission. **Action Required:** Fix cell pitcher_id in row 7 and resubmit. ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- services/sheets_service.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/services/sheets_service.py b/services/sheets_service.py index 7671e88..5695134 100644 --- a/services/sheets_service.py +++ b/services/sheets_service.py @@ -315,11 +315,19 @@ class SheetsService: # Check for spreadsheet errors if self._is_spreadsheet_error(value): - self.logger.warning( - f"Row {row_num}: Spreadsheet error '{value}' in field '{field_name}' - skipping row" + raise SheetsException( + f"❌ Spreadsheet Error Detected\n\n" + f"**Location:** Row {row_num}, Column '{field_name}'\n" + f"**Value Found:** `{value}`\n\n" + f"This cell contains a formula error that must be fixed before submission.\n\n" + f"**Common Error Types:**\n" + f"• `#REF!` - Invalid cell reference (deleted row/column)\n" + f"• `#N/A` - Lookup formula couldn't find a match\n" + f"• `#VALUE!` - Wrong data type in formula\n" + f"• `#DIV/0!` - Division by zero\n" + f"• `#NAME?` - Unrecognized formula name\n\n" + f"**Action Required:** Fix cell {field_name} in row {row_num} and resubmit." ) - has_error = True - break # Sanitize integer fields if field_name in int_fields: