diff --git a/packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts b/packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts index 5159e9b76e..75e86750df 100644 --- a/packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts +++ b/packages/nodes-base/nodes/Google/Sheet/v2/actions/router.ts @@ -52,9 +52,6 @@ export async function router(this: IExecuteFunctions): Promise { const items = this.getInputData(); @@ -123,25 +138,55 @@ export async function execute( const deleteType = this.getNodeParameter('toDelete', i) as string; if (deleteType === 'rows') { - startIndex = this.getNodeParameter('startIndex', i) as number; - // We start from 1 now... - startIndex--; - numberToDelete = this.getNodeParameter('numberToDelete', i) as number; - if (numberToDelete === 1) { - endIndex = startIndex + 1; - } else { - endIndex = startIndex + numberToDelete; + const deleteEmptyRows = this.getNodeParameter('deleteEmptyRows', i) as boolean; + + if (deleteEmptyRows){ + const range = sheetName; //full sheet + const response = (await sheet.getData(range, 'UNFORMATTED_VALUE', 'FORMATTED_STRING')); + const rows = response || []; + const emptyRows: number[] = []; + + // Identify empty rows + rows.forEach((row, index) => { + if (!row.length) + emptyRows.push(index + 1); // Store the row number (1-indexed) + }); + + // Delete empty rows (from bottom to top to avoid indices moving) + for(let rowIndex of emptyRows.reverse()){ + requests.push({ + deleteDimension: { + range: { + sheetId: sheetId, + dimension: 'ROWS', + startIndex: rowIndex-1, + endIndex: rowIndex, + } + } + }) + }; } - requests.push({ - deleteDimension: { - range: { - sheetId: sheetName, - dimension: 'ROWS', - startIndex, - endIndex, + else{ + startIndex = this.getNodeParameter('startIndex', i) as number; + // We start from 1 now... + startIndex--; + numberToDelete = this.getNodeParameter('numberToDelete', i) as number; + if (numberToDelete === 1) { + endIndex = startIndex + 1; + } else { + endIndex = startIndex + numberToDelete; + } + requests.push({ + deleteDimension: { + range: { + sheetId: sheetId, + dimension: 'ROWS', + startIndex, + endIndex, + }, }, - }, - }); + }); + } } else if (deleteType === 'columns') { startIndex = this.getNodeParameter('startIndex', i) as string; numberToDelete = this.getNodeParameter('numberToDelete', i) as number; @@ -154,7 +199,7 @@ export async function execute( requests.push({ deleteDimension: { range: { - sheetId: sheetName, + sheetId: sheetId, dimension: 'COLUMNS', startIndex, endIndex,