From 7348f928c8783ea7961cd697f99a1ae54af607ef Mon Sep 17 00:00:00 2001 From: Michael Kret <88898367+michael-radency@users.noreply.github.com> Date: Mon, 25 May 2026 14:21:46 +0300 Subject: [PATCH] fix(Google Sheets Node): Handle undefined lookup values in lookupValues (#31055) --- .../Sheet/test/v2/helpers/GoogleSheet.test.ts | 32 +++++++++++++++++++ .../Google/Sheet/v2/helpers/GoogleSheet.ts | 4 +-- .../Sheet/v2/helpers/GoogleSheets.types.ts | 2 +- 3 files changed, 35 insertions(+), 3 deletions(-) diff --git a/packages/nodes-base/nodes/Google/Sheet/test/v2/helpers/GoogleSheet.test.ts b/packages/nodes-base/nodes/Google/Sheet/test/v2/helpers/GoogleSheet.test.ts index 275a00ab6eb..fdbb07b7bed 100644 --- a/packages/nodes-base/nodes/Google/Sheet/test/v2/helpers/GoogleSheet.test.ts +++ b/packages/nodes-base/nodes/Google/Sheet/test/v2/helpers/GoogleSheet.test.ts @@ -239,6 +239,38 @@ describe('GoogleSheet', () => { expect(result).toEqual([{ name: 'John', age: '30', city: 'NY' }]); }); + it('should ignore undefined lookup values without throwing (OR)', async () => { + const lookupValues = [{ lookupColumn: 'age', lookupValue: undefined }]; + + const result = await googleSheet.lookupValues({ + inputData, + keyRowIndex: 0, + dataStartRowIndex: 1, + lookupValues, + returnAllMatches: true, + combineFilters: 'OR', + nodeVersion: 4.5, + }); + + expect(result).toEqual([]); + }); + + it('should ignore undefined lookup values without throwing (AND)', async () => { + const lookupValues = [{ lookupColumn: 'age', lookupValue: undefined }]; + + const result = await googleSheet.lookupValues({ + inputData, + keyRowIndex: 0, + dataStartRowIndex: 1, + lookupValues, + returnAllMatches: true, + combineFilters: 'AND', + nodeVersion: 4.5, + }); + + expect(result).toEqual([]); + }); + it('should throw error for invalid key row', async () => { const lookupValues = [{ lookupColumn: 'age', lookupValue: '30' }]; diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts b/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts index 2d5e3caa96e..fc96cd40039 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheet.ts @@ -737,7 +737,7 @@ export class GoogleSheet { for (rowIndex = dataStartRowIndex; rowIndex < inputData.length; rowIndex++) { if ( inputData[rowIndex][returnColumnIndex]?.toString() === - lookupValue.lookupValue.toString() + lookupValue.lookupValue?.toString() ) { if (addedRows.indexOf(rowIndex) === -1) { returnData.push(inputData[rowIndex]); @@ -769,7 +769,7 @@ export class GoogleSheet { if ( inputData[rowIndex][returnColumnIndex]?.toString() !== - lookupValue.lookupValue.toString() + lookupValue.lookupValue?.toString() ) { allMatch = false; break; diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.types.ts b/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.types.ts index ef643d99535..ec1712e6601 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.types.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/helpers/GoogleSheets.types.ts @@ -18,7 +18,7 @@ export interface ISheetUpdateData { export interface ILookupValues { lookupColumn: string; - lookupValue: string; + lookupValue: string | number | boolean | null | undefined; } export interface IToDeleteRange {