SharePoint の .NET クライアント オブジェクト モデルを使用してソーシャル フィードに対する読み書きを行うHow to: Learn to read and write to the social feed by using the .NET client object model in SharePoint

SharePoint の .NET クライアント オブジェクト モデルを使用してソーシャル フィードに対する読み書きを行うコンソール アプリケーションを作成します。Create a console application that reads and writes to the social feed by using the SharePoint .NET client object model.

SharePointの .NET クライアント オブジェクト モデルを使用してソーシャル フィードに対する読み書きを行うコンソール アプリケーションを作成するための前提条件Prerequisites for creating a console application that reads and writes to the social feed by using the SharePoint .NET client object model

ここで作成するコンソール アプリケーションは、対象ユーザーのフィードを取得し、番号付きリストにある各スレッドの最初の投稿を出力します。さらに、選択されているスレッドに対する簡単なテキスト返信を発行します。フィードへの投稿と返信は、どちらを発行する場合にも同じメソッド ( CreatePost ) を使用します。The console application that you'll create retrieves a target user's feed and prints the root post from each thread in a numbered list. Then, it publishes a simple text reply to the selected thread. The same method ( CreatePost ) is used to publish both posts and replies to the feed.

コンソール アプリケーションを作成するには、次のものが必要です。To create the console application, you'll need the following:

  • 個人用サイトが構成済みで、現在のユーザーと対象ユーザー向けに個人用サイトが作成され、対象ユーザーによっていくつかの投稿が作成されている SharePointSharePoint with My Site configured, with personal sites created for the current user and a target user, and with a few posts written by the target user

  • Visual Studio 2012Visual Studio 2012

  • ログオンしているユーザーの User Profile Service アプリケーションに対するフル コントロールのアクセス許可Full Control access permissions to the User Profile service application for the logged-on user

注意

SharePoint を実行するコンピューター上で開発しない場合は、SharePoint クライアント アセンブリが含まれている SharePoint クライアント コンポーネントをダウンロードしてください。Note: If you're not developing on the computer that is running SharePoint, get the SharePoint Client Components download that contains SharePoint client assemblies.

SharePoint のソーシャル フィードの操作に関する中心概念Core concepts to know about working with SharePoint social feeds

表 1 は、作業を開始する前に知っておく必要がある重要な概念を説明する記事へのリンクをまとめたものです。Table 1 contains links to articles that describe core concepts you should know before you get started.

表 1. SharePointのソーシャル フィードの操作に関する重要な概念Table 1. Core concepts for working with SharePoint social feeds

記事のタイトルArticle title 説明Description
SharePoint でのソーシャル機能の開発の概要Get started developing with social features in SharePoint
ソーシャル フィードとマイクロブログの投稿を使用したプログラミングを開始し、ユーザーやコンテンツ (ドキュメント、サイト、タグの.md ファイル) のフォローや、ユーザー プロファイルの操作を行う方法を説明しています。Find out how to get started programming with social feeds and microblog posts, following people and content (documents, sites, and tags.md), and working with user profiles.
SharePoint でのソーシャル フィードの操作Work with social feeds in SharePoint
ソーシャル フィードを操作するための一般的なプログラミング作業と、そうした作業の実行に使用する API について説明しています。Learn about common programming tasks for working with social feeds and the API that you use to perform the tasks.

Visual Studio 2012 でコンソール アプリケーションを作成してクライアント アセンブリへの参照を追加するCreate the console application in Visual Studio 2012 and add references to client assemblies

  1. 開発用のコンピューターで、Visual Studio 2012 を開きます。On your development computer, open Visual Studio 2012.

  2. メニュー バーで、[ ファイル]、[ 新規作成]、[ プロジェクト] の順に選択します。On the menu bar, choose File, New, Project.

  3. [ 新しいプロジェクト] ダイアログ ボックスで、上部のドロップダウン リストから [ .NET Framework 4.5] を選択します。In the New Project dialog box, choose .NET Framework 4.5 from the drop-down list at the top of the dialog box.

  4. [ テンプレート] ボックスの一覧で、[ Windows] を選択し、[ コンソール アプリケーション] テンプレートを選択します。From the Templates list, choose Windows, and then choose the Console Application template.

  5. プロジェクトの名前を ReadWriteMySite とし、[ OK] をクリックします。Name the project ReadWriteMySite, and then choose the OK button.

  6. 次に示すように、クライアント アセンブリへの参照を追加します。Add references to the client assemblies, as follows:

    a.a. ソリューション エクスプローラーで、ReadWriteMySite プロジェクトのショートカット メニューを開き、[参照の追加] を選択します。In Solution Explorer, open the shortcut menu for the ReadWriteMySite project, and then choose Add Reference.

    b.b. [参照マネージャー] ダイアログ ボックスで、次のアセンブリを選択します。In the Reference Manager dialog box, choose the following assemblies:

    • Microsoft.SharePoint.ClientMicrosoft.SharePoint.Client

    • Microsoft.SharePoint.Client.RuntimeMicrosoft.SharePoint.Client.Runtime

    • Microsoft.SharePoint.Client.UserProfilesMicrosoft.SharePoint.Client.UserProfiles

    SharePoint を実行しているコンピューター上で開発を行っている場合、上記のアセンブリは [拡張機能] カテゴリ内にあります。If you are developing on the computer that is running SharePoint, the assemblies are in the Extensions category. それ以外の場合は、ダウンロードしたクライアント アセンブリの場所を参照します (「SharePoint クライアント コンポーネント」を参照)。Otherwise, browse to the location that has the client assemblies you downloaded (see SharePoint Client Components).

  7. Program.cs ファイルに、次の using ステートメントを追加します。In the Program.cs file, add the following using statements.

using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

SharePointの .NET クライアント オブジェクト モデルを使用して対象ユーザーのソーシャル フィードを取得するRetrieve the social feed for a target user by using the SharePoint .NET client object model

  1. サーバー URL と対象ユーザーのアカウント資格情報に関する変数を宣言します。Declare variables for the server URL and target user's account credentials.

    const string serverUrl = "http://serverName/";
    const string targetUser = "domainName\\userName";
    

    注意

    コードを実行する前に、http://serverName/ および domainName\\userName プレースホルダーの値を必ず置き換えてください。http://serverName/ Remember to replace the domainName\\userName and placeholder values before you run the code.

  2. Main メソッドで、SharePoint クライアント コンテキストを初期化します。In the Main method, initialize the SharePoint client context.

    ClientContext clientContext = new ClientContext(serverUrl);
    
  3. SocialFeedManager インスタンスを作成します。Create the SocialFeedManager instance.

    SocialFeedManager feedManager = new SocialFeedManager(clientContext);
    
  4. 取得するフィード コンテンツのパラメーターを指定します。Specify the parameters for the feed content that you want to retrieve.

    SocialFeedOptions feedOptions = new SocialFeedOptions();
    feedOptions.MaxThreadCount = 10;
    

    既定のオプションでは、フィード内の最初の 20 スレッドが最終更新日で並び替えられた状態で返されます。The default options return the first 20 threads in the feed, sorted by last modified date.

  5. 対象ユーザーのフィードを取得します。Get the target user's feed.

    ClientResult<SocialFeed> feed = feedManager.GetFeedFor(targetUser, feedOptions);
    clientContext.ExecuteQuery();
    

    GetFeedFor は、 ClientResult オブジェクトを返します。スレッドのコレクションは、このオブジェクトの Value プロパティに格納されています。GetFeedFor returns a ClientResult object that stores the collection of threads in its Value property.

SharePoint の .NET クライアント オブジェクト モデルを使用して反復処理とソーシャル フィードからの読み取りを行うIterate through and read from the social feed by using the SharePoint .NET client object model

次のコードは、フィード内のスレッドに対して反復処理を行います。各スレッドが CanReply 属性を持つかどうかを確認したうえで、スレッド識別子と最初の投稿のテキストを取得します。また、(スレッドへの返信に使用される) スレッド識別子を格納するための辞書を作成し、最初の投稿のテキストをコンソールに書き込みます。The following code iterates through the threads in the feed. It checks whether each thread has the CanReply attribute and then gets the thread identifier and the text of the root post. The code also creates a dictionary to store the thread identifier (which is used to reply to a thread) and writes the text of the root post to the console.

Dictionary<int, string> idDictionary = new Dictionary<int, string>();
for (int i = 0; i < feed.Value.Threads.Length; i++)
{
    SocialThread thread = feed.Value.Threads[i];
    string postText = thread.RootPost.Text;
    if (thread.Attributes.HasFlag(SocialThreadAttributes.CanReply))
    {
        idDictionary.Add(i, thread.Id);
        Console.WriteLine("\\t" + (i + 1) + ". " + postText);
    }
}

SharePointの .NET クライアント オブジェクト モデルを使用してソーシャル フィードへの返信を投稿するPost a reply to the social feed by using the SharePoint .NET client object model

  1. (UI 関連のみ) 返信先のスレッドを取得し、ユーザーに返信内容の入力を求めます。(UI-related only) Get the thread to reply to and prompt for the user's reply.
Console.Write("Which post number do you want to reply to?  ");
string threadToReplyTo = "";
int threadNumber = int.Parse(Console.ReadLine()) - 1;
idDictionary.TryGetValue(threadNumber, out threadToReplyTo);
Console.Write("Type your reply:  ");
  1. 返信の定義を行います。次のコードは、コンソール アプリケーションから返信テキストを取得します。Define the reply. The following code gets the reply's text from the console application.
SocialPostCreationData postCreationData = new SocialPostCreationData();
postCreationData.ContentText = Console.ReadLine();
  1. 返信を発行します。threadToReplyTo パラメーターは、スレッドの Id プロパティを表しています。Publish the reply. The threadToReplyTo parameter represents of the thread's Id property.
feedManager.CreatePost(threadToReplyTo, postCreationData);
clientContext.ExecuteQuery();
> [!NOTE]
> The  [CreatePost](https://msdn.microsoft.com/library/Microsoft.SharePoint.Client.Social.SocialFeedManager.CreatePost.aspx) method is also used to publish a root post to the current user's feed by passing **null** for the first parameter.
  1. (UI 関連のみ) プログラムを終了します。(UI-related only) Exit the program.

    Console.WriteLine("Your reply was published.");
    Console.ReadKey(false);
    
  2. コンソール アプリケーションをテストするには、メニュー バーの [ デバッグ] を選択し、[ デバッグ開始] をクリックします。To test the console application, on the menu bar, choose Debug, Start Debugging.

コード例: SharePointの .NET クライアント オブジェクト モデルを使用してフィードの取得と投稿への返信を行うCode example: Retrieve a feed and reply to a post by using the SharePoint .NET client object model

以下に、Program.cs ファイルの完全なコード例を示します。The following example is the complete code from the Program.cs file.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;

namespace ReadWriteMySite
{
    class Program
    {
        static void Main(string[] args)
        {

            // Replace the following placeholder values with the target server running SharePoint and the
            // target thread owner.
            const string serverUrl = "http://serverName/";
            const string targetUser = "domainName\\userName";

            // Connect to the client context.
            ClientContext clientContext = new ClientContext(serverUrl);

            // Get the SocialFeedManager instance.
            SocialFeedManager feedManager = new SocialFeedManager(clientContext);

            // Specify the parameters for the feed content that you want to retrieve.
            SocialFeedOptions feedOptions = new SocialFeedOptions();
            feedOptions.MaxThreadCount = 10;

            // Get the target owner's feed (posts and activities) and then run the request on the server.
            ClientResult<SocialFeed> feed = feedManager.GetFeedFor(targetUser, feedOptions);
            clientContext.ExecuteQuery();

            // Create a dictionary to store the Id property of each thread. This code example stores
            // the ID so a user can select a thread to reply to from the console application.
            Dictionary<int, string> idDictionary = new Dictionary<int, string>();
            for (int i = 0; i < feed.Value.Threads.Length; i++)
            {
                SocialThread thread = feed.Value.Threads[i];

                // Keep only the threads that can be replied to.
                if (thread.Attributes.HasFlag(SocialThreadAttributes.CanReply))
                {
                    idDictionary.Add(i, thread.Id);

                    // Write out the text of the post.
                    Console.WriteLine("\\t" + (i + 1) + ". " + thread.RootPost.Text);
                }
            }
            Console.Write("Which post number do you want to reply to?  ");

            string threadToReplyTo = "";
            int threadNumber = int.Parse(Console.ReadLine()) - 1;
            idDictionary.TryGetValue(threadNumber, out threadToReplyTo);

            Console.Write("Type your reply:  ");

            // Define properties for the reply.
            SocialPostCreationData postCreationData = new SocialPostCreationData();
            postCreationData.ContentText = Console.ReadLine();

            // Post the reply and make the changes on the server.
            feedManager.CreatePost(threadToReplyTo, postCreationData);
            clientContext.ExecuteQuery();

            Console.WriteLine("Your reply was published.");
            Console.ReadKey(false);

            // TODO: Add error handling and input validation.
        }
    }
}

次の手順Next steps

.NET クライアント オブジェクト モデルを使用したソーシャル フィードに関する読み書きのタスクの実行方法については、以下を参照してください。To learn how to do more read tasks and write tasks with the social feed by using the .NET client object model, see the following:

関連項目See also