mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-26 05:04:05 -08:00
feat(Notion Node): Option to simplify output in getChildBlocks operation (#7791)
Github issue / Community forum post (link here to close automatically): --------- Co-authored-by: Marcus <marcus@n8n.io>
This commit is contained in:
parent
137e23853f
commit
d667bca658
|
@ -199,4 +199,19 @@ export const blockFields: INodeProperties[] = [
|
||||||
},
|
},
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
displayName: 'Simplify Output',
|
||||||
|
name: 'simplifyOutput',
|
||||||
|
type: 'boolean',
|
||||||
|
displayOptions: {
|
||||||
|
show: {
|
||||||
|
resource: ['block'],
|
||||||
|
operation: ['getAll'],
|
||||||
|
},
|
||||||
|
hide: {
|
||||||
|
'@version': [1, 2],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -39,6 +39,7 @@ export type SortData = { key: string; type: string; direction: string; timestamp
|
||||||
const apiVersion: { [key: number]: string } = {
|
const apiVersion: { [key: number]: string } = {
|
||||||
1: '2021-05-13',
|
1: '2021-05-13',
|
||||||
2: '2021-08-16',
|
2: '2021-08-16',
|
||||||
|
2.1: '2021-08-16',
|
||||||
};
|
};
|
||||||
|
|
||||||
export async function notionApiRequest(
|
export async function notionApiRequest(
|
||||||
|
@ -1067,3 +1068,45 @@ export function extractDatabaseMentionRLC(blockValues: IDataObject[]) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function simplifyBlocksOutput(blocks: IDataObject[], rootId: string) {
|
||||||
|
for (const block of blocks) {
|
||||||
|
const type = block.type as string;
|
||||||
|
block.root_id = rootId;
|
||||||
|
|
||||||
|
['created_time', 'last_edited_time', 'created_by'].forEach((key) => {
|
||||||
|
delete block[key];
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
if (['code'].includes(type)) {
|
||||||
|
const text = (block[type] as IDataObject).text as IDataObject[];
|
||||||
|
if (text && Array.isArray(text)) {
|
||||||
|
const content = text.map((entry) => entry.plain_text || '').join('');
|
||||||
|
block.content = content;
|
||||||
|
delete block[type];
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (['child_page', 'child_database'].includes(type)) {
|
||||||
|
const content = (block[type] as IDataObject).title as string;
|
||||||
|
block.content = content;
|
||||||
|
delete block[type];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
const text = (block[type] as IDataObject)?.text as IDataObject[];
|
||||||
|
|
||||||
|
if (text && Array.isArray(text)) {
|
||||||
|
const content = text.map((entry) => entry.plain_text || '').join('');
|
||||||
|
block.content = content;
|
||||||
|
delete block[type];
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return blocks;
|
||||||
|
}
|
||||||
|
|
|
@ -13,12 +13,13 @@ export class Notion extends VersionedNodeType {
|
||||||
group: ['output'],
|
group: ['output'],
|
||||||
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
||||||
description: 'Consume Notion API',
|
description: 'Consume Notion API',
|
||||||
defaultVersion: 2,
|
defaultVersion: 2.1,
|
||||||
};
|
};
|
||||||
|
|
||||||
const nodeVersions: IVersionedNodeType['nodeVersions'] = {
|
const nodeVersions: IVersionedNodeType['nodeVersions'] = {
|
||||||
1: new NotionV1(baseDescription),
|
1: new NotionV1(baseDescription),
|
||||||
2: new NotionV2(baseDescription),
|
2: new NotionV2(baseDescription),
|
||||||
|
2.1: new NotionV2(baseDescription),
|
||||||
};
|
};
|
||||||
|
|
||||||
super(nodeVersions, baseDescription);
|
super(nodeVersions, baseDescription);
|
||||||
|
|
|
@ -26,6 +26,7 @@ import {
|
||||||
notionApiRequest,
|
notionApiRequest,
|
||||||
notionApiRequestAllItems,
|
notionApiRequestAllItems,
|
||||||
notionApiRequestGetBlockChildrens,
|
notionApiRequestGetBlockChildrens,
|
||||||
|
simplifyBlocksOutput,
|
||||||
simplifyObjects,
|
simplifyObjects,
|
||||||
validateJSON,
|
validateJSON,
|
||||||
} from '../GenericFunctions';
|
} from '../GenericFunctions';
|
||||||
|
@ -312,6 +313,16 @@ export class NotionV2 implements INodeType {
|
||||||
..._data,
|
..._data,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const nodeVersion = this.getNode().typeVersion;
|
||||||
|
|
||||||
|
if (nodeVersion > 2) {
|
||||||
|
const simplifyOutput = this.getNodeParameter('simplifyOutput', i) as boolean;
|
||||||
|
|
||||||
|
if (simplifyOutput) {
|
||||||
|
responseData = simplifyBlocksOutput(responseData, blockId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const executionData = this.helpers.constructExecutionMetaData(
|
const executionData = this.helpers.constructExecutionMetaData(
|
||||||
this.helpers.returnJsonArray(responseData as IDataObject),
|
this.helpers.returnJsonArray(responseData as IDataObject),
|
||||||
{ itemData: { item: i } },
|
{ itemData: { item: i } },
|
||||||
|
|
|
@ -15,7 +15,7 @@ export const versionDescription: INodeTypeDescription = {
|
||||||
name: 'notion',
|
name: 'notion',
|
||||||
icon: 'file:notion.svg',
|
icon: 'file:notion.svg',
|
||||||
group: ['output'],
|
group: ['output'],
|
||||||
version: 2,
|
version: [2, 2.1],
|
||||||
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
||||||
description: 'Consume Notion API',
|
description: 'Consume Notion API',
|
||||||
defaults: {
|
defaults: {
|
||||||
|
|
Loading…
Reference in a new issue