From 23503ce9f854c9f9d9988f82a3ee4931d42b09e7 Mon Sep 17 00:00:00 2001 From: ricardo Date: Thu, 26 Mar 2020 17:18:11 -0400 Subject: [PATCH] :zap: Added continue option --- .../nodes/Google/GoogleSheets.node.ts | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/Google/GoogleSheets.node.ts b/packages/nodes-base/nodes/Google/GoogleSheets.node.ts index 3603570abd..cea43f963d 100644 --- a/packages/nodes-base/nodes/Google/GoogleSheets.node.ts +++ b/packages/nodes-base/nodes/Google/GoogleSheets.node.ts @@ -20,7 +20,6 @@ import { ValueRenderOption, } from './GoogleSheet'; - export class GoogleSheets implements INodeType { description: INodeTypeDescription = { displayName: 'Google Sheets ', @@ -406,6 +405,21 @@ export class GoogleSheets implements INodeType { }, }, options: [ + { + displayName: 'Continue If Response Is Empty', + name: 'continue', + type: 'boolean', + default: false, + displayOptions: { + show: { + '/operation': [ + 'lookup', + 'read', + ], + }, + }, + description: 'By default, the workflow stops executing if the lookup/read does not return values', + }, { displayName: 'Return All Matches', name: 'returnAllMatches', @@ -678,7 +692,14 @@ export class GoogleSheets implements INodeType { }); } - const returnData = await sheet.lookupValues(sheetData, keyRow, dataStartRow, lookupValues, options.returnAllMatches as boolean | undefined); + let returnData = await sheet.lookupValues(sheetData, keyRow, dataStartRow, lookupValues, options.returnAllMatches as boolean | undefined); + + if (returnData.length === 0 && options.continue && options.returnAllMatches) { + returnData = [{}]; + + } else if (returnData.length === 1 && Object.keys(returnData[0]).length === 0 && !options.continue && !options.returnAllMatches) { + returnData = []; + } return [this.helpers.returnJsonArray(returnData)]; } else if (operation === 'read') { @@ -707,6 +728,10 @@ export class GoogleSheets implements INodeType { returnData = sheet.structureArrayDataByColumn(sheetData, keyRow, dataStartRow); } + if (returnData.length === 0 && options.continue) { + returnData = [{}]; + } + return [this.helpers.returnJsonArray(returnData)]; } else if (operation === 'update') { // ----------------------------------