2

SharePoint Online のクライアント側オブジェクト モデルとアプリをいじっています。FieldUserValue オブジェクトを使用して Person フィールドと Groups フィールドから情報を取得できますが、入力された値が単なるユーザーなのか SharePoint グループなのかを判断するにはどうすればよいでしょうか?

私が知る限り、FieldUserValue にはプロパティとして LookupId と LookupValue しかなく、グループかどうかは指定されていません。これについて間違った方法をとったのでしょうか? フィールドをクエリして、値が SharePoint グループのユーザーであるかどうかを確認するより良い方法はありますか?

ありがとう

4

1 に答える 1

6

でリスト アイテムのコンテンツ タイプを取得することにより、ユーザー フィールドの値がUserまたはであるかどうかを判断できます。GroupUser Information List

public static string GetUserFieldType(ClientContext ctx,FieldUserValue value)
{
    var userInfoList = ctx.Site.RootWeb.SiteUserInfoList;
    var userInfo = userInfoList.GetItemById(value.LookupId);
    ctx.Load(userInfo,i => i.ContentType);
    ctx.ExecuteQuery();
    return userInfo.ContentType.Name;
}

使用法

リストに単一値のユーザー フィールドが含まれていると仮定すると、次のようになります。

using (var ctx = new ClientContext(webUrl))
{
      ctx.Credentials = CreateSPOCredentials(userName, password);

      var list = ctx.Web.Lists.GetByTitle(listTitle);
      var listItem = list.GetItemById(itemId);
      ctx.Load(listItem);
      ctx.ExecuteQuery();

      var userVal = listItem[fieldName] as FieldUserValue;
      var type = GetUserFieldType(ctx,userVal);
      var isUser = type == "Person";
      var isGroup = type == "SharePointGroup";

  }
于 2014-12-28T21:32:46.917 に答える