onedrive folders hierarchy creation support

This commit is contained in:
Roberto Damiani 2021-10-10 02:42:25 +02:00
parent 8618415772
commit 49fbea7551
2 changed files with 17 additions and 10 deletions

View file

@ -67,7 +67,7 @@ export const folderFields = [
}, },
}, },
default: '', default: '',
description: `Folder's name`, description: `Folder's name, or a folders slash (/) separated hierarchy`,
}, },
{ {
displayName: 'Options', displayName: 'Options',

View file

@ -209,17 +209,24 @@ export class MicrosoftOneDrive implements INodeType {
if (resource === 'folder') { if (resource === 'folder') {
//https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_post_children?view=odsp-graph-online //https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_post_children?view=odsp-graph-online
if (operation === 'create') { 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 options = this.getNodeParameter('options', i) as IDataObject;
const body: IDataObject = { let parentFolderId = options.parentFolderId ? options.parentFolderId : null;
for( let name of names ) {
let body: IDataObject = {
name, name,
folder: {}, folder: {},
}; };
let endpoint = '/drive/root/children'; let endpoint = '/drive/root/children';
if (options.parentFolderId) { if (parentFolderId) {
endpoint = `/drive/items/${options.parentFolderId}/children`; endpoint = `/drive/items/${parentFolderId}/children`;
} }
responseData = await microsoftApiRequest.call(this, 'POST', endpoint, body); responseData = await microsoftApiRequest.call(this, 'POST', endpoint, body);
if( !responseData.id ) {
break;
}
parentFolderId = responseData.id;
}
returnData.push(responseData); returnData.push(responseData);
} }
//https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_delete?view=odsp-graph-online //https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_delete?view=odsp-graph-online