Creating new site collection in Office 365 from an APP

自作多情 提交于 2019-12-08 08:03:50

问题


I have a requirement to create a new site collection from within an App in Office 365 programmatically. What I mean by a new site collection, is that after creation, it should appear on the list of site collections under the Admin --> Sharepoint tab of Office 365. I tried using a similar code below within a sharepoint hosted app that i had created,

//create sp context and get root
var clientContext = new SP.ClientContext.get_current();
var rootWeb = clientContext.site.rootWeb();
this.clientContext.load(rootWeb);
this.clientContext.executeQUery();

//set web info
var webInfo = new SP.WebCreationInformation();
webInfo.set_webTemplate('YourTemplateName');
webInfo.set_description('Your site description');
webInfo.set_title('Your site tittle');
webInfo.set_url(siteUrl);
webInfo.set_language(yourLangCode);
this.rootWeb.get_webs().add(webInfo);
this.rootWeb.update();

// save site and set callbacks
this.clientContext.load(this.rootWeb);
this.clientContext.executeQueryAsync(
Function.createDelegate(this, this.OnSiteCreationSuccess),
Function.createDelegate(this, this.Error));

However this just creates a sub site under the site collection that hosts my App.

Any suggestions on how i could implement this would be greatly appreciated.


回答1:


It can be done with SharePoint Object Model 2013, the functions you need are inside the assembly: Microsoft.Online.SharePoint.Client.Tenant.dll, which is located at C:\Program Files\SharePoint Client Components\Assemblies after you install the SharePoint Client Object model 2013.

There's not much doc on this, but SharePoint Online Management Shell has the command to create the site collection, so I think it can be done with C# and figured it out. The code snippet shows how to do it.

using System;
using Microsoft.Online.SharePoint.TenantAdministration;
using Microsoft.SharePoint.Client;
using System.Security;

namespace SharePoint123
{
    class Program
    {
        static void Main(string[] args)
        {
            //please change the value of user name, password, and admin portal URL
            string username = "xxxx@xxxx.onmicrosoft.com";
            String pwd = "xxxx";
            ClientContext context = new ClientContext("https://xxxx-admin.sharepoint.com");
            SecureString password = new SecureString();
            foreach (char c in pwd.ToCharArray())
            {
                password.AppendChar(c);
            }
            context.Credentials = new SharePointOnlineCredentials(username, password);

            Tenant t = new Tenant(context);
            context.ExecuteQuery();//login into SharePoint online


            //code to create a new site collection
            var newsite = new SiteCreationProperties()
            {
                Url = "https://xxxxx.sharepoint.com/sites/createdbyProgram1",
                Owner = "xxxxx@xxxxx.onmicrosoft.com",
                Template = "STS#0", //using the team site template, check the MSDN if you want to use other template
                StorageMaximumLevel = 100,
                UserCodeMaximumLevel = 100,
                UserCodeWarningLevel = 100,
                StorageWarningLevel = 300,
                Title = "CreatedbyPrgram",
                CompatibilityLevel = 15, //15 means Shapoint online 2013, 14 means Sharepoint online 2010

            };
            t.CreateSite(newsite);

            context.ExecuteQuery();
            //end 

        }
    }

}


来源:https://stackoverflow.com/questions/21268629/creating-new-site-collection-in-office-365-from-an-app

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!