0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CSOM(C#)でSharePointグループを作成する

Posted at

#概要
CSOM(C#)でSharePointグループを作成します。
SharePointサイト作成時に、合わせてグループを作成する際や、まとまった数のグループを作成する際などに便利です。

#開発環境
.NET Framework 4.7.2
NugetでMicrosoft.SharePointOnline.CSOMを追加
image.png

#手順

  1. SharePointOnlineで、グループを作成したいサイトにログインする
     * usingでサイトのURLを指定 - http://xxx.xxxx.com/sites/sitecollection/sitename の形式

  2. 作成したいグループの存在確認を行う
     * サイトのSPOグループから、ここでは作成したいグループのタイトルと同じタイトルのグループを検索して取得
     * 下記ソースコードでは、既に存在している場合はそこで処理を終了

  3. GroupCreationInformationクラスを使用し、グループを追加する
     * GroupCreationInformaionクラスにグループのタイトルと説明を設定し、サイトグループにAddする

  4. 属性の編集が必要な場合は、編集して更新する
     * 作成したグループを取得し、属性の更新を行う

#コード

CreateGroup.cs

// ログインユーザー
var loginUser = ConfigurationManager.AppSettings["SPO_ID"];
// サイトコレクション(サイト)のURL
var siteCol = ConfigurationManager.AppSettings["SITE_COLLECTION_URL"];
// サイトのURL名
var newSiteUrl = ConfigurationManager.AppSettings["NEW_SITE_URL"];

using (var clientContext = new ClientContext(Utility.URLCombine(siteCol, newSiteUrl)))
using (var secureString = new SecureString())
{
    foreach (var c in ConfigurationManager.AppSettings["SPO_PASS"]) secureString.AppendChar(c);
    secureString.MakeReadOnly();
    clientContext.Credentials = new SharePointOnlineCredentials(loginUser, secureString);

    var message = string.Empty;

    var newGroupName = $"{newSiteUrl.TrimEnd('/')}Admin";       // サイトURL名+Admin 管理者用グループ
    var newGroupDisc = "管理者用グループ";

    // 指定したグループが既存かどうかを確認する
    var groups = clientContext.Web.SiteGroups;
    clientContext.Load(groups, gp => gp.Include(g => g.Title).Where(g => g.Title == newGroupName));
    clientContext.ExecuteQuery();
    // 存在する場合は処理終了
    if (groups.FirstOrDefault() != null) return;

    // グループ作成
    var groupCreateInfo = new GroupCreationInformation
    {
        Title = newGroupName,
        Description = newGroupDisc,
    };

    var newGroupAdd = clientContext.Web.SiteGroups.Add(groupCreateInfo);
    clientContext.Load(newGroupAdd);
    clientContext.ExecuteQuery();

    // グループ設定の編集
    // 編集のために再取得
    groups = clientContext.Web.SiteGroups;
    clientContext.Load(groups, gp => gp.Include(g => g.Title).Where(g => g.Title == newGroupName));
    clientContext.ExecuteQuery();

    var group = groups.FirstOrDefault();
    group.OnlyAllowMembersViewMembership = false;           // グループのメンバーシップを表示できるユーザー:すべてのユーザー
    group.AllowMembersEditMembership = true;                // グループのメンバーシップを編集できるユーザー:グループメンバー
    group.Update();
    clientContext.ExecuteQuery();
}

#GroupCreationInformationクラス
新しく作成するSharepointグループの属性を指定します。下記以外の属性は、作成時初期値となり、必要に応じて別途設定が必要となるようです。

  • Title … グループ名
  • Description … グループの説明

#実行結果
下記のようにSharePointグループが作成されます。
image.png

#参照
GroupCreationInformationクラス

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?