diff --git a/packages/core/src/NodeExecuteFunctions.ts b/packages/core/src/NodeExecuteFunctions.ts index 1741e20fc6aba..9f454c9ed3051 100644 --- a/packages/core/src/NodeExecuteFunctions.ts +++ b/packages/core/src/NodeExecuteFunctions.ts @@ -1309,8 +1309,13 @@ export function returnJsonArray(jsonData: IDataObject | IDataObject[]): INodeExe jsonData = [jsonData]; } - jsonData.forEach((data: IDataObject) => { - returnData.push({ json: data }); + jsonData.forEach((data: IDataObject & { json?: IDataObject }) => { + if (data.json) { + // We already have the JSON key so avoid double wrapping + returnData.push({ ...data, json: data.json }); + } else { + returnData.push({ json: data }); + } }); return returnData; diff --git a/packages/nodes-base/nodes/Google/Gmail/Gmail.node.ts b/packages/nodes-base/nodes/Google/Gmail/Gmail.node.ts index 5a19d02597be0..df6ee2db73f5e 100644 --- a/packages/nodes-base/nodes/Google/Gmail/Gmail.node.ts +++ b/packages/nodes-base/nodes/Google/Gmail/Gmail.node.ts @@ -508,7 +508,7 @@ export class Gmail implements INodeType { }; } - responseData = [nodeExecutionData]; + responseData = nodeExecutionData; } if (operation === 'getAll') { const returnAll = this.getNodeParameter('returnAll', i) as boolean; @@ -734,7 +734,7 @@ export class Gmail implements INodeType { }; } - responseData = [nodeExecutionData]; + responseData = nodeExecutionData; } if (operation === 'delete') { // https://developers.google.com/gmail/api/v1/reference/users/drafts/delete @@ -818,18 +818,10 @@ export class Gmail implements INodeType { } } - let executionData = responseData as INodeExecutionData[]; - - if (!['get', 'getAll'].includes(operation) || resource === 'label') { - executionData = this.helpers.constructExecutionMetaData( - this.helpers.returnJsonArray(responseData), - { itemData: { item: i } }, - ); - } else { - executionData = this.helpers.constructExecutionMetaData(executionData, { - itemData: { item: i }, - }); - } + const executionData = this.helpers.constructExecutionMetaData( + this.helpers.returnJsonArray(responseData), + { itemData: { item: i } }, + ); returnData.push(...executionData); } catch (error) {