#概要
CSOM(C#)でSharePointグループを作成します。
SharePointサイト作成時に、合わせてグループを作成する際や、まとまった数のグループを作成する際などに便利です。
#開発環境
.NET Framework 4.7.2
NugetでMicrosoft.SharePointOnline.CSOMを追加
#手順
-
SharePointOnlineで、グループを作成したいサイトにログインする
* usingでサイトのURLを指定 - http://xxx.xxxx.com/sites/sitecollection/sitename の形式 -
作成したいグループの存在確認を行う
* サイトのSPOグループから、ここでは作成したいグループのタイトルと同じタイトルのグループを検索して取得
* 下記ソースコードでは、既に存在している場合はそこで処理を終了 -
GroupCreationInformationクラスを使用し、グループを追加する
* GroupCreationInformaionクラスにグループのタイトルと説明を設定し、サイトグループにAddする -
属性の編集が必要な場合は、編集して更新する
* 作成したグループを取得し、属性の更新を行う
#コード
// ログインユーザー
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 … グループの説明