From 6e9e2f4024199f63f6b9223d77da90bcf596ac3a Mon Sep 17 00:00:00 2001 From: Nicholas Tindle Date: Tue, 9 Dec 2025 10:34:46 -0600 Subject: [PATCH] Improve error handling in Google Sheets blocks Fixes the deleted row count to use sorted_indices in GoogleSheetsDeleteRowsBlock. Adds validation for secondary sort column existence in GoogleSheetsSortBlock, raising a ValueError if not found. Enhances GoogleSheetsUpdateRowBlock to validate all column names before updating, raising a ValueError if any are missing. --- .../backend/backend/blocks/google/sheets.py | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/autogpt_platform/backend/backend/blocks/google/sheets.py b/autogpt_platform/backend/backend/blocks/google/sheets.py index 826787f4ce..7b9ba2161e 100644 --- a/autogpt_platform/backend/backend/blocks/google/sheets.py +++ b/autogpt_platform/backend/backend/blocks/google/sheets.py @@ -2871,7 +2871,7 @@ class GoogleSheetsDeleteRowsBlock(Block): spreadsheetId=spreadsheet_id, body={"requests": requests} ).execute() - return {"success": True, "deleted_count": len(row_indices)} + return {"success": True, "deleted_count": len(sorted_indices)} class GoogleSheetsGetColumnBlock(Block): @@ -3287,18 +3287,22 @@ class GoogleSheetsSortBlock(Block): f"Sheet only has {len(header)} columns (A-{_index_to_column_letter(len(header) - 1)})." ) - if sec_col_idx >= 0: - sort_specs.append( - { - "dimensionIndex": sec_col_idx, - "sortOrder": ( - "ASCENDING" - if secondary_order == SortOrder.ASCENDING - else "DESCENDING" - ), - } + if sec_col_idx < 0: + raise ValueError( + f"Secondary sort column '{secondary_column}' not found. Available: {header}" ) + sort_specs.append( + { + "dimensionIndex": sec_col_idx, + "sortOrder": ( + "ASCENDING" + if secondary_order == SortOrder.ASCENDING + else "DESCENDING" + ), + } + ) + # Build sort range request start_row = 1 if has_header else 0 # Skip header if present @@ -4478,7 +4482,20 @@ class GoogleSheetsUpdateRowBlock(Block): while len(current_row) < len(header): current_row.append("") - # Update specific columns from dict + # Update specific columns from dict - validate all column names first + for col_name in dict_values.keys(): + found = False + for h in header: + if h.lower() == col_name.lower(): + found = True + break + if not found: + raise ValueError( + f"Column '{col_name}' not found in sheet. " + f"Available columns: {', '.join(header)}" + ) + + # Now apply updates updated_count = 0 for col_name, value in dict_values.items(): for idx, h in enumerate(header):