Question

How can I create a folder in root level using JSOM

the snippets available in Microsoft site are for creating folders under existing folders, I want to create in root level

    oWebsite = clientContext.get_web();
    oList = oWebsite.get_lists().getByTitle("Shared Documents");
// I want to create a folder like Shared Documents, i.e. in that level
        itemCreateInfo = new SP.ListItemCreationInformation();
        itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
        itemCreateInfo.set_leafName($(".input").val());
        this.oListItem = oList.addItem(itemCreateInfo);
        this.oListItem.set_item($(".input").val(), "My new folder!");
Was it helpful?

Solution

You can try the below code to create folder inside list/libary:

function createFolder() {  
  var clientContext = SP.ClientContext.get_current();
  var item = null;
  var oList = clientContext.get_web().get_lists().getByTitle('Documents');
  clientContext.load(oList);
  var itemCreateInfo = new SP.ListItemCreationInformation();
  itemCreateInfo.set_underlyingObjectType(SP.FileSystemObjectType.folder);
  itemCreateInfo.set_leafName('Test Folder');

  item = oList.addItem(itemCreateInfo);
  item.set_item("ContentTypeId", "0x0120");
  item.set_item('Title', 'Test Folder');

  item.update();
  clientContext.load(item);
  clientContext.executeQueryAsync(
    function() { 
        console.log("folder created!");
    } , 
    function(sender,args) { 
        console.log("something went wrong... " + args.get_message()); 
    }  
  );
}

Try below code to create a document library at the "same" level as Shared Documents

function createDocLib() {
    var clientContext = SP.ClientContext.get_current();
    var oWebsite = clientContext.get_web();

    var listCreationInfo = new SP.ListCreationInformation();
    listCreationInfo.set_title('Test Document');
    listCreationInfo.set_templateType(SP.ListTemplateType.documentLibrary);

    var oList = oWebsite.get_lists().add(listCreationInfo);

    clientContext.load(oList);

    clientContext.executeQueryAsync(onQuerySucceeded, onQueryFailed);
}

function onQuerySucceeded() {
    var result = oList.get_title() + ' created.';
    console.log(result);
}

function onQueryFailed(sender, args) {
    console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}

OTHER TIPS

Please try below code.

oWebsite = clientContext.get_web();
oList = oWebsite.get_lists().getByTitle("Shared Documents");
var parentFolder = oList.get_rootFolder()
var clientContext= parentFolder.get_context();
var curFolder = parentFolder.get_folders().add('My new folder!');
clientContext.load(curFolder);
clientContext.executeQueryAsync(
          function () {

          },
          function (sender, args) {

          });
    }

Hope it works for you!!!

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top