diff --git a/packages/nodes-base/nodes/Microsoft/OneDrive/FolderDescription.ts b/packages/nodes-base/nodes/Microsoft/OneDrive/FolderDescription.ts index 16f1ccdf4d..2c6f8b5190 100644 --- a/packages/nodes-base/nodes/Microsoft/OneDrive/FolderDescription.ts +++ b/packages/nodes-base/nodes/Microsoft/OneDrive/FolderDescription.ts @@ -56,6 +56,7 @@ export const folderFields = [ name: 'name', required: true, type: 'string', + placeholder: '/Pictures/2021', displayOptions: { show: { operation: [ @@ -67,7 +68,7 @@ export const folderFields = [ }, }, default: '', - description: `Folder's name`, + description: 'The name or path of the folder', }, { displayName: 'Options', diff --git a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts index da16900725..d71ce3fb9b 100644 --- a/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts +++ b/packages/nodes-base/nodes/Microsoft/OneDrive/MicrosoftOneDrive.node.ts @@ -97,7 +97,7 @@ export class MicrosoftOneDrive implements INodeType { body.name = additionalFields.name as string; } responseData = await microsoftApiRequest.call(this, 'POST', `/drive/items/${fileId}/copy`, body, {}, undefined, {}, { json: true, resolveWithFullResponse: true }); - responseData = { location : responseData.headers.location }; + responseData = { location: responseData.headers.location }; returnData.push(responseData as IDataObject); } //https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_delete?view=odsp-graph-online @@ -193,7 +193,7 @@ export class MicrosoftOneDrive implements INodeType { const binaryData = (items[i].binary as IBinaryKeyData)[binaryPropertyName]; const body = await this.helpers.getBinaryDataBuffer(i, binaryPropertyName); - responseData = await microsoftApiRequest.call(this, 'PUT', `/drive/items/${parentId}:/${fileName || binaryData.fileName}:/content`, body, {}, undefined, { 'Content-Type': binaryData.mimeType, 'Content-length': body.length }, {} ); + responseData = await microsoftApiRequest.call(this, 'PUT', `/drive/items/${parentId}:/${fileName || binaryData.fileName}:/content`, body, {}, undefined, { 'Content-Type': binaryData.mimeType, 'Content-length': body.length }, {}); returnData.push(JSON.parse(responseData) as IDataObject); } else { @@ -201,7 +201,7 @@ export class MicrosoftOneDrive implements INodeType { if (fileName === '') { throw new NodeOperationError(this.getNode(), 'File name must be set!'); } - responseData = await microsoftApiRequest.call(this, 'PUT', `/drive/items/${parentId}:/${fileName}:/content`, body , {}, undefined, { 'Content-Type': 'text/plain' } ); + responseData = await microsoftApiRequest.call(this, 'PUT', `/drive/items/${parentId}:/${fileName}:/content`, body, {}, undefined, { 'Content-Type': 'text/plain' }); returnData.push(responseData as IDataObject); } } @@ -209,17 +209,24 @@ export class MicrosoftOneDrive implements INodeType { if (resource === 'folder') { //https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_post_children?view=odsp-graph-online if (operation === 'create') { - const name = this.getNodeParameter('name', i) as string; + const names = (this.getNodeParameter('name', i) as string).split('/').filter(s => s.trim() !== ''); const options = this.getNodeParameter('options', i) as IDataObject; - const body: IDataObject = { - name, - folder: {}, - }; - let endpoint = '/drive/root/children'; - if (options.parentFolderId) { - endpoint = `/drive/items/${options.parentFolderId}/children`; + let parentFolderId = options.parentFolderId ? options.parentFolderId : null; + for (const name of names) { + const body: IDataObject = { + name, + folder: {}, + }; + let endpoint = '/drive/root/children'; + if (parentFolderId) { + endpoint = `/drive/items/${parentFolderId}/children`; + } + responseData = await microsoftApiRequest.call(this, 'POST', endpoint, body); + if (!responseData.id) { + break; + } + parentFolderId = responseData.id; } - responseData = await microsoftApiRequest.call(this, 'POST', endpoint, body); returnData.push(responseData); } //https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_delete?view=odsp-graph-online