Создание нового семейства сайтов в Office 365 из приложения

У меня есть требование создать новое семейство сайтов из приложения в Office 365 программно. Под новым семейством веб-сайтов я подразумеваю то, что после создания оно должно появиться в списке семейств веб-сайтов на вкладке «Администратор» -> «Sharepoint» в Office 365. Я попытался использовать аналогичный код ниже в приложении, размещенном на sharepoint, которое у меня было созданный,

//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));

Однако это просто создает дополнительный сайт в семействе сайтов, на котором размещается мое приложение.

Будем очень признательны за любые предложения о том, как я могу это реализовать.


person RAHUL    schedule 21.01.2014    source источник


Ответы (1)


Это можно сделать с помощью объектной модели SharePoint 2013, нужные вам функции находятся внутри сборки: Microsoft.Online.SharePoint.Client.Tenant.dll, которая находится в C: \ Program Files \ SharePoint Client Components \ Assemblies после установки Клиентская объектная модель SharePoint 2013.

Документов по этому поводу не так много, но Командная консоль SharePoint Online имеет команду для создания семейства сайтов, так что я думаю, что это можно сделать с помощью C #, и разобрался. Во фрагменте кода показано, как это сделать.

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 = "[email protected]";
            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 = "[email protected]",
                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 

        }
    }

}
person Matt    schedule 22.01.2014
comment
Большое спасибо за это, Мэтт. Это именно то, что я искал. Невероятно, как сложно получить на это документацию. Знаете ли вы, можно ли программно назначить разрешения для пользователя или группы новому созданному семейству сайтов? - person RAHUL; 22.01.2014
comment
Я думаю, что это возможно, потому что это уже есть в команде powershell: technet.microsoft.com/en-us/library/fp161371 (v = office.15). Его следует использовать с этим классом: msdn.microsoft. ru / en-us / library /. Но у меня нет для этого примера. - person Matt; 22.01.2014