none
ドキュメントライブラリ上のドキュメントが自分に共有されているかを判定する方法 RRS feed

  • 質問

  • 現在、SharePoint 2013 のサイト(またはサイトコレクション)上のドキュメントライブラリから、自分が共有されているドキュメントの一覧を、C#またはJavaScript上から、取得したいと考えています。(OneDrive for Business の「自分と共有」と同じように、自分が共有されているドキュメントの一覧を表示する仕組みをWebパーツまたはAppパーツ化したいと考えています)

    この内容を満たすような適切なAPIを見つけられなかったため、まずは、C#のSPObjectSharingInformationクラスを使用して、現在、ドキュメントを共有しているユーザーの一覧をを取得することを考え、以下のようなコードを記述して確認してみました。しかし、GetListItemSharingInformation メソッドを実行した直後に、NullReferenceException となってしまい、共有されているユーザー情報を取得することができず、行き詰っている状態です。

    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
        using (SPSite site = new SPSite("http://ServerName/sites/SiteName"))
            using (var web = site.OpenWeb())
            {
                var list = web.Lists("ListName");
                var item = list.Items[0];
    
                var shareInfo = SPObjectSharingInformation.GetListItemSharingInformation (list.ID, item.ID, false, false, false, true, true, true);
                var users = shareInfo.GetSharedWithUsers();
                foreach (SPObjectSharingInformationUser user in users)
                {
                    Console.WriteLine("{0} ", user.Name);
                }
             }
         }
    });

    上記を踏まえて、以下の質問に対し、ご教授のほど、よろしくお願いします。

    Q1.  C#またはJavaScriptのコードから、ドキュメント登録者の「共有」操作により、自分が共有されているドキュメント(ドキュメントライブラリ内)の一覧を取得する方法をもしご存知でしたらご教授ください。(SPSocialFollowingManagerクラスを使用して、自分がフォローしているドキュメントのURLを取得できることは知っています)
    Q2.  C#またはJavaScriptのコードから、ドキュメントライブラリ上の指定したドキュメントが自分と共有されているかどうかを判断する方法をご存知でしたら教えてください。(SPObjectSharingInformationクラスを使用した私のコードの問題点も指摘いただけるようであればぜひ…)
     
    それでは、よろしくお願いします。




    • 編集済み まろ 2014年5月26日 7:28
    2014年5月26日 6:13