mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-25 04:34:06 -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,
|
||||
},
|
||||
{
|
||||
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 } = {
|
||||
1: '2021-05-13',
|
||||
2: '2021-08-16',
|
||||
2.1: '2021-08-16',
|
||||
};
|
||||
|
||||
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'],
|
||||
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
||||
description: 'Consume Notion API',
|
||||
defaultVersion: 2,
|
||||
defaultVersion: 2.1,
|
||||
};
|
||||
|
||||
const nodeVersions: IVersionedNodeType['nodeVersions'] = {
|
||||
1: new NotionV1(baseDescription),
|
||||
2: new NotionV2(baseDescription),
|
||||
2.1: new NotionV2(baseDescription),
|
||||
};
|
||||
|
||||
super(nodeVersions, baseDescription);
|
||||
|
|
|
@ -26,6 +26,7 @@ import {
|
|||
notionApiRequest,
|
||||
notionApiRequestAllItems,
|
||||
notionApiRequestGetBlockChildrens,
|
||||
simplifyBlocksOutput,
|
||||
simplifyObjects,
|
||||
validateJSON,
|
||||
} from '../GenericFunctions';
|
||||
|
@ -312,6 +313,16 @@ export class NotionV2 implements INodeType {
|
|||
..._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(
|
||||
this.helpers.returnJsonArray(responseData as IDataObject),
|
||||
{ itemData: { item: i } },
|
||||
|
|
|
@ -15,7 +15,7 @@ export const versionDescription: INodeTypeDescription = {
|
|||
name: 'notion',
|
||||
icon: 'file:notion.svg',
|
||||
group: ['output'],
|
||||
version: 2,
|
||||
version: [2, 2.1],
|
||||
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
||||
description: 'Consume Notion API',
|
||||
defaults: {
|
||||
|
|
Loading…
Reference in a new issue