複数地域テナントのユーザー プロファイルを操作する
複数地域テナントでは、ユーザーの優先データ場所の定義、ユーザーのプロファイルの場所と個人用サイトの URL の検出、既定およびカスタムのユーザー プロファイル プロパティの読み取りと更新を行なえます。
優先されるデータ場所の定義
複数地域テナントの場合、SharePoint ユーザーの一部は北アメリカ、一部はヨーロッパというように、ユーザーの地理的位置が異なっています。 このモデルは、ユーザー アカウントと個人用サイト (OneDrive for Business) にも適用されます。
ユーザーとユーザー アカウント、およびサイトは、同じ地理的位置にあるのが理想です。 確実にそうするため、個人用サイトを作る前に、ユーザーの優先されるデータ場所をそのユーザーの地理的位置に設定します。
次の図に示す例では、ユーザー vesa@contoso.onmicrosoft.com はヨーロッパに住んでおり、推奨されるデータの場所が EUR に設定されています。 例:
- ユーザーのプロファイルの既定のコピーは、ヨーロッパの地理的位置になっています。
- ユーザーの個人用サイトは、ヨーロッパの地理的位置に作成されます。
ユーザー bert@contoso.onmicrosoft.com が優先するデータの場所が NAM に設定されている。 このユーザーは、優先されるデータの場所を設定する前に、ヨーロッパで個人用サイトをホストしていたため、自分のプロファイルがヨーロッパにあります。
ユーザーのプロファイルと個人サイトは同じ地理的位置にあります。 個人用サイトを持っていないユーザー:
- 優先されるデータの場所を設定すると、プロファイルはその地理的位置に置かれます。
- 優先されるデータの場所を設定していないと、プロファイルは既定の地理的位置に置かれます。
ユーザーのプロファイルの場所と個人用サイトの URL を検出するには
ユーザーのプロファイルの場所をプログラムで検出するには、以下のいずれかを行います。
- SharePoint ユーザー プロファイル API を使う。 このアプローチは、すべてのシナリオで動作するので、推奨されます。
- Microsoft Graph を使う。 個人用サイトを持っているユーザーはこの方法を使えますが、個人用サイトを持っていないユーザーは使えません。
SharePoint ユーザー プロファイル API を使用してプロファイルの場所を検出する
REST または CSOM を介して SharePoint ユーザー プロファイル API を呼び出し、指定のアカウントの個人用サイトのホスト URL を取得することができます。 この URL には、個人用サイトが作成されているかどうかに関係なく、ユーザーの個人用サイトのための個人用サイトのホストが含まれます。 次の例は REST 呼び出しを示しています。
GET https://contoso.sharepoint.com/_api/SP.UserProfiles.PeopleManager/GetPropertiesFor(accountName=@v)/personalsitehosturl?%40v=%27i%3A0%23.f%7Cmembership%7Cbert%40contoso.onmicrosoft.com%27
C# を使用している場合、次の例で示すとおり、CSOM の方が簡単に使用できます。
public string GetUserPersonalSiteHostUrlCSOM(string userPrincipalName)
{
string result = null;
PeopleManager peopleManager = new PeopleManager(this.clientContext);
var userProperties = peopleManager.GetPropertiesFor($"i:0#.f|membership|{userPrincipalName}");
this.clientContext.Load(userProperties);
this.clientContext.ExecuteQuery();
result = userProperties.PersonalSiteHostUrl;
return result;
}
個人サイトのホスト URL を持っている場合、合わせて複数地域検出情報を使って、ユーザーのプロファイルをホストする地理的位置のテナント管理サイトの URL を取得することができます。
詳細については、MultiGeo.UserProfileUpdates のサンプルを参照してください。
Microsoft Graph を使用して、ユーザーの個人用サイトの URL を検出する
複数地域テナントにあるユーザーの個人用サイトの URL を検出するには、次の Microsoft Graph 呼び出しを使用することができます。
GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=mySite
個人サイトのホスト URL を持っている場合、合わせて複数地域検出情報を使って、ユーザーのプロファイルをホストする地理的位置のテナント管理サイトの URL を取得することができます。
注:
個人サイトを持っていないユーザーは、この方法は使えません。 その場合は、代わりに SharePoint ユーザー プロファイル API を使ってください。
詳細については、MultiGeo.UserProfileUpdates のサンプルを参照してください。
ユーザー プロファイル プロパティの更新
ユーザー プロファイル プロパティの一括更新は、エンタープライズのお客様に一般的なシナリオとなっています。 使用するプロセスは、更新するユーザー プロファイル プロパティの種類によって異なります。
既定のユーザー プロファイル プロパティを更新する
一部のユーザー プロファイル プロパティは、既定で利用できます。たとえば、Department、AboutMe、PreferredDataLocation がそうです。 Microsoft Graph には地理機能が付いているので、これらのプロパティを更新する際は Microsoft Graph API を使用するようにお勧めします。
次の例は、ユーザー bert@contoso.onmicrosoft.comの AboutMe プロパティを更新する方法を示しています。
GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=aboutme
詳細については、MultiGeo.UserProfileUpdates のサンプルをご覧ください。
優先されるデータ場所のプロパティを更新する
ユーザーの優先されるデータの場所 (preferredDataLocation プロパティ) は、ユーザーの優先される地理的位置を示します。 これは、以下の事項に影響します。
- ユーザーの個人サイトがプロビジョニングされる地理的位置
- ユーザーのグループ サイトが作成される地理的位置
優先されるデータの場所は既定のプロパティであるため、次に示す例のように Microsoft Graph API を使って定義するようにお勧めします。
GET https://graph.microsoft.com/v1.0/users/bert@contoso.onmicrosoft.com?$select=preferredDataLocation
PATCH https://graph.microsoft.com/beta/users/bert@contoso.onmicrosoft.com
JSON payload:
{
"preferredDataLocation" : "eur"
}
詳細については、MultiGeo.UserPreferredDataLocation の例をご覧ください。
カスタムの SharePoint ユーザー プロファイル プロパティを追加する
SharePoint のユーザー プロファイルに、会社固有のユーザー プロファイル プロパティを追加できます。 SharePoint の複数地域テナントには、次の考慮事項が適用されます。
- カスタム ユーザー プロファイルのプロパティは、地理的位置のレベルに作成されます。 ヨーロッパの地理的位置でプロパティが作成された場合、プロパティは他の地理的位置では利用できません。 すべての地理的位置でカスタム ユーザー プロファイルのプロパティを作成するのがベスト プラクティスです。 そうすることで、ユーザーが地理的位置を越えて移動した場合にデータが失われるリスクを軽減できます。
- カスタム ユーザー プロファイルのプロパティは、地理的位置のレベルで読み取りと更新を行う必要があります。 すべての地域の場所にカスタム プロパティを作成した場合は、geo の場所を反復処理し、すべてのユーザーのプロパティを更新する必要があります。
注:
ユーザーの検索結果にユーザーのカスタム プロファイル プロパティを表示するには、プロパティを作成し、少なくともユーザーのプロファイルの場所に設定する必要があります。 たとえば、NAM にあるプロファイルを持つユーザーの場合、ユーザーの検索結果に表示するには、少なくとも NAM geo にカスタム プロパティを設定する必要があります。プロファイルが EUR にあるユーザーの場合、カスタム プロパティは少なくとも EUR で設定する必要があります。
// For SharePoint Online custom properties, use the following approach.
string userPrincipalName = "bert@contoso.onmicrosoft.com";
string userAccountName = $"i:0#.f|membership|{userPrincipalName}";
PeopleManager peopleManager = new PeopleManager(tenantAdminContext);
var propsToRetrieve = new string[] { "CostCenter", "CustomProperty" };
var props = peopleManager.GetUserProfilePropertiesFor(new UserProfilePropertiesForUser(tenantAdminContext, userAccountName, propsToRetrieve));
tenantAdminContext.ExecuteQuery();
int i = 0;
foreach (var prop in props)
{
Console.WriteLine($"Prop: {propsToRetrieve[i]} Value: {prop}");
i++;
}
// Update user profile properties
peopleManager.SetSingleValueProfileProperty(userAccountName, "CostCenter", "89786879");
tenantAdminContext.ExecuteQuery();
詳細については、MultiGeo.UserProfileUpdates のサンプルをご覧ください。
ユーザー プロファイルの一括更新 API を使用する
ユーザー プロファイルの一括更新 API を使用すると、複数地域テナントにあるカスタム ユーザー プロファイルのプロパティを一括更新できます。 以下の点に注意してください。
- この API は、地理的位置レベルで機能しますが、複数地域機能は付いていません。 たとえば、ヨーロッパの地理的位置で API を使用する場合、ヨーロッパのアカウントのみが更新されます。
- さまざまな地理的位置のアカウントでインポート ファイルを指定しても、API は、その地理的位置のユーザーのプロパティのみを更新します。