Core.MMS サンプル コンソール アプリケーションは、SharePoint Managed Metadata Service と対話して用語、用語セット、グループを作成および取得する方法を示します。 このサンプルは、ASP.NET MVC Web アプリケーションなどのプロバイダー ホスト型アドインでも稼働します。
SharePoint ファーム間で用語を移行したり、カスタム アドインで用語を表示したりするには、このソリューションを使用してください。
はじめに
まず、Core.MMS サンプル アドインを GitHub 上の Office 365 Developer Patterns and Practices プロジェクトからダウンロードします。
注:
この記事で提供されるコードは、明示または黙示のいかなる種類の保証なしに現状のまま提供されるものであり、特定目的への適合性、商品性、権利侵害の不存在についての暗黙的な保証は一切ありません。
このアドインを実行するには、その前に以下が必要になります。
- SharePoint サイトの URL。
- Managed Metadata Service の用語ストアに対するアクセス許可。
次の図は、これらのアクセス許可を割り当てる際に使用する Office 365 管理センターを示しています。
用語ストアにアクセス許可を割り当てるには、次のようにします。
Office 365 管理センターで、[用語ストア] を選択します。
[分類用語ストア] で、管理者を割り当てる用語セットを選択します。
[用語ストア管理者] に、用語ストア管理者のアクセス許可を必要とする組織アカウントを入力します。
Core.MMS サンプル アドインを使用する
アドインを起動すると、次の図に示すようなコンソール アプリケーションが表示されます。 SharePoint または SharePoint Online サイトの URL と認証情報を入力するよう求められます。
SharePoint の URL と認証情報を入力すると、ユーザー認証が行われます。
以下のコードにより、SharePoint Online でユーザー認証が実行されます。
ClientContext cc = new ClientContext(siteUrl);
cc.AuthenticationMode = ClientAuthenticationMode.Default;
// For SharePoint Online.
cc.Credentials = new SharePointOnlineCredentials(userName, pwd);
以下のコードにより、SharePoint Online 専用ファームまたはオンプレミス SharePoint ファームでユーザー認証が実行されます。
ClientContext cc = new ClientContext(siteUrl);
cc.AuthenticationMode = ClientAuthenticationMode.Default;
// For SharePoint Online Dedicated or on-premises .
cc.Credentials = new NetworkCredential(userName, pwd);
CreateNecessaryMMSTermsToCloud メソッドは、Managed Metadata Service 内でグループ、用語セット、および複数の用語を作成します。 コードは、カスタム TermGroup、TermSet、および新しい用語を作成する前に、まず TaxonomySession オブジェクトへの参照を取得し、次に TermStore オブジェクトを取得します。
private static void CreateNecessaryMMSTermsToCloud(ClientContext cc)
{
// Get access to taxonomy CSOM.
TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(cc);
cc.Load(taxonomySession);
cc.ExecuteQuery();
if (taxonomySession != null)
{
TermStore termStore = taxonomySession.GetDefaultSiteCollectionTermStore();
if (termStore != null)
{
//
// Create group, termset, and terms.
//
TermGroup myGroup = termStore.CreateGroup("Custom", Guid.NewGuid());
TermSet myTermSet = myGroup.CreateTermSet("Colors", Guid.NewGuid(), 1033);
myTermSet.CreateTerm("Red", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Orange", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Yellow", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Green", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Blue", 1033, Guid.NewGuid());
myTermSet.CreateTerm("Purple", 1033, Guid.NewGuid());
cc.ExecuteQuery();
}
}
}
新しい用語が作成された後、GetMMSTermsFromCloud() メソッドがすべての用語グループ、用語セット、用語を Managed Metadata Service から取得します。 CreateNecessaryMMSTermsToCloud() メソッドと同じように、このコードでは最初に TaxonomySession オブジェクトへの参照、次に TermStore オブジェクトへの参照を取得してから、用語情報を取得して表示します。
private static void GetMMSTermsFromCloud(ClientContext cc)
{
//
// Load up the taxonomy item names.
//
TaxonomySession taxonomySession = TaxonomySession.GetTaxonomySession(cc);
TermStore termStore = taxonomySession.GetDefaultSiteCollectionTermStore();
cc.Load(termStore,
store => store.Name,
store => store.Groups.Include(
group => group.Name,
group => group.TermSets.Include(
termSet => termSet.Name,
termSet => termSet.Terms.Include(
term => term.Name)
)
)
);
cc.ExecuteQuery();
//
// Writes the taxonomy item names.
//
if (taxonomySession != null)
{
if (termStore != null)
{
foreach (TermGroup group in termStore.Groups)
{
Console.WriteLine("Group " + group.Name);
foreach (TermSet termSet in group.TermSets)
{
Console.WriteLine("TermSet " + termSet.Name);
foreach (Term term in termSet.Terms)
{
// Writes root-level terms only.
Console.WriteLine("Term " + term.Name);
}
}
}
}
}
}
Managed Metadata Service の用語データは、コンソール アプリケーション (以下の図を参照) および Managed Metadata Service の用語ストア (2 番目の図を参照) に表示されます。