SharePoint でメンション、タグ、サイトおよびドキュメントへのリンクを投稿に含める
SocialDataItem オブジェクトをミニブログの投稿に追加する方法を説明します。これらは SharePoint ソーシャル フィードのメンション、タグ、またはリンクとしてレンダリングされます。
ソーシャル フィードでは、最も簡単な形式の投稿コンテンツにはテキストのみが含まれますが、メンション、タグ、または Web サイト、SharePoint サイト、およびドキュメントへのリンクとしてレンダリングされるリンクを追加することもできます。 これを行うには、SocialDataItem オブジェクトを、post を定義する SocialPostCreationData オブジェクトの ContentItems プロパティに追加します。 投稿には複数のリンクを含めることができます。
注:
埋め込まれた画像、ビデオ、またはドキュメントを投稿のコンテンツに追加するには、SocialPostCreationData.Attachment プロパティに SocialAttachment オブジェクトを追加します。 詳細については、「方法: SharePoint で投稿にイメージ、ビデオ、ドキュメントを埋め込む」を参照してください。
この記事で説明する API は, .NET クライアント オブジェクト モデルのものです。 ただし、JavaScript オブジェクト モデルなど別の API を使用する場合は、オブジェクト名または対応する API が異なることがあります。 関連 API のドキュメントへのリンクは、「その他の技術情報」を参照してください。
SharePoint でリンクを投稿に追加するコード例を使用するための前提条件
この記事のコード例は、リンクをミニブログの投稿に追加する方法を示しています。 これらの例は、次の SharePoint アセンブリを使用するコンソール アプリケーションのものです。
Microsoft.SharePoint.Client
Microsoft.SharePoint.Client.Runtime
Microsoft.SharePoint.Client.UserProfilies
開発環境をセットアップしてコンソール アプリケーションを作成する方法については、「 方法: SharePoint で .NET クライアント オブジェクト モデルを使用して投稿を作成および削除し、ソーシャル フィードを取得する」を参照してください。
例: SharePoint で Web サイト、SharePoint サイト、およびドキュメントへのリンクを投稿に含める
次のコード例では、Web サイト、SharePoint サイト、およびドキュメントへのリンクを含む投稿を公開します。 方法は次のとおりです。
リンクを表す SocialDataItem オブジェクトを作成します。 各インスタンスでリンク タイプ用の SocialDataItemType フィールド、リンク用の表示テキスト、およびリンクの URI を設定します。
リンクの表示テキストを表示する場所を示すプレースホルダーを投稿テキストに追加します。
投稿の作成に使用する SocialPostCreationData オブジェクトの ContentItems プロパティにリンク オブジェクトを追加します。
注:
現在、SharePoint は Web サイト、SharePoint サイト、ドキュメントへのリンクを同じように処理しますが、ベスト プラクティスとして、SharePoint サイトとドキュメントの [サイト の種類] と [ドキュメント の種類] を選択します。
ソーシャル フィードで Web サイト、SharePoint サイト、またはドキュメントへのリンクをクリックすると、アイテムが別のブラウザー ウィンドウで開きます。
注:
コードを実行する前に、URL 変数のプレースホルダー値を変更してください。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;
namespace IncludeLinksInPost
{
class Program
{
static void Main(string[] args)
{
// Replace the following placeholder values with the actual values.
const string serverUrl = "http://serverName/siteName/";
const string websiteLinkUrl = "http://bing.com";
const string siteLinkUrl = "http://serverName/siteName/";
const string docLinkUrl = "http://serverName/Shared%20Documents/docName.txt";
// Define the link to a website that you want to include in the post.
SocialDataItem websiteLink = new SocialDataItem
{
ItemType = SocialDataItemType.Link,
Text = "link to a website",
Uri = websiteLinkUrl
};
// Define the link to a SharePoint site that you want to include in the post.
SocialDataItem siteLink = new SocialDataItem
{
ItemType = SocialDataItemType.Site,
Text = "link to a SharePoint site",
Uri = siteLinkUrl
};
// Define the link to a document that you want to include in the post.
SocialDataItem docLink = new SocialDataItem
{
ItemType = SocialDataItemType.Document,
Text = "link to a document",
Uri = docLinkUrl
};
// Add the links to the post's creation data.
// Put placeholders ({n}) where you want the links to appear in the post text,
// and then add the links to the post's content items.
SocialPostCreationData postCreationData = new SocialPostCreationData();
postCreationData.ContentText = "Check out this {0}, {1}, and {2}.";
postCreationData.ContentItems = new SocialDataItem[3] {
websiteLink,
siteLink,
docLink
};
try
{
// Get the context and the SocialFeedManager instance.
ClientContext clientContext = new ClientContext(serverUrl);
SocialFeedManager feedManager = new SocialFeedManager(clientContext);
// Publish the post. This is a root post to the user's feed, so specify
// null for the targetId parameter.
feedManager.CreatePost(null, postCreationData);
clientContext.ExecuteQuery();
Console.Write("The post was published.");
Console.ReadLine();
}
catch (Exception ex)
{
Console.Write("Error publishing the post: " + ex.Message);
Console.ReadLine();
}
}
}
}
例: SharePoint の投稿で他のユーザーにメンションを付ける
次のコード例では、ユーザーにメンションを付ける投稿を公開します。 方法は次のとおりです。
ユーザーへのリンクであるメンションを表す SocialDataItem オブジェクトを作成します。 SocialDataItem で、 SocialDataItemType.User フィールドとメンションを付けるユーザーのアカウント名を指定します。 アカウント名は、ユーザーのログインまたは電子メール アドレスを使用して設定できます。
メンションを付けるユーザーの表示名を表示する場所を示すプレースホルダーを投稿テキストに追加します。
SocialDataItem を、投稿の作成に使用される SocialPostCreationData オブジェクトの ContentItems プロパティに追加します。
ソーシャル フィードでメンションをクリックすると、メンションが付いた個人の [基本データ] ページにリダイレクトされます。
注:
コードを実行する前に、変数 serverURL と accountName のプレースホルダーの値を変更してください。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;
namespace IncludeMentionInPost
{
class Program
{
static void Main(string[] args)
{
// Replace the following placeholder values with the actual values.
const string serverUrl = "http://serverName/siteName/";
const string accountName = @"domain\\name or email address";
// Define the mention link that you want to include in the post.
SocialDataItem userMentionLink = new SocialDataItem
{
ItemType = SocialDataItemType.User,
AccountName = accountName
};
// Add the mention to the post's creation data.
// Put a placeholder ({0}) where you want the mention to appear in the post text,
// and then add the mention to the post's content items.
SocialPostCreationData postCreationData = new SocialPostCreationData();
postCreationData.ContentText = "{0} does great work!";
postCreationData.ContentItems = new SocialDataItem[1] { userMentionLink, };
try
{
// Get the context and the SocialFeedManager instance.
ClientContext clientContext = new ClientContext(serverUrl);
SocialFeedManager feedManager = new SocialFeedManager(clientContext);
// Publish the post. This is a root post to the user's feed, so specify
// null for the targetId parameter.
feedManager.CreatePost(null, postCreationData);
clientContext.ExecuteQuery();
Console.Write("The post was published.");
Console.ReadLine();
}
catch (Exception ex)
{
Console.Write("Error publishing the post: " + ex.Message);
Console.ReadLine();
}
}
}
}
例: SharePoint で投稿にタグを含める
次のコード例では、タグを含む投稿を公開します。 方法は次のとおりです。
タグを表す SocialDataItem オブジェクトを作成します。 SocialDataItem では、SocialDataItemType.Tag フィールドとタグ名を指定します。これには文字を#含める必要があります。
タグを表示する場所を示すプレースホルダーを投稿テキストに追加します。
SocialDataItem を、投稿の作成に使用される SocialPostCreationData オブジェクトの ContentItems プロパティに追加します。
ソーシャル フィードでタグをクリックすると、タグの [ 詳細情報] ページにリダイレクトされます。 タグがまだ存在しない場合は、サーバーによって作成されます。
注:
コードを実行する前に、変数 serverURL と tagName のプレースホルダーの値を変更してください。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.Social;
namespace IncludeTagInPost
{
class Program
{
static void Main(string[] args)
{
// Replace the following placeholder values with the actual values.
const string serverUrl = "http://serverName/siteName/";
const string tagName = "#" + "tagName";
// Define the link to a tag that you want to include in the post. If the tag is new, the
// server adds it to the tags collection.
SocialDataItem tagLink = new SocialDataItem
{
ItemType = SocialDataItemType.Tag,
Text = tagName
};
// Add the tag to the post's creation data.
// Put a placeholder ({0}) where you want the tag to appear in the post text,
// and then add the tag to the post's content items.
SocialPostCreationData postCreationData = new SocialPostCreationData();
postCreationData.ContentText = "I like {0}.";
postCreationData.ContentItems = new SocialDataItem[1] { tagLink };
try
{
// Get the context and the SocialFeedManager instance.
ClientContext clientContext = new ClientContext(serverUrl);
SocialFeedManager feedManager = new SocialFeedManager(clientContext);
// Publish the post. This is a root post to the user's feed, so specify
// null for the targetId parameter.
feedManager.CreatePost(null, postCreationData);
clientContext.ExecuteQuery();
Console.Write("The post was published.");
Console.ReadLine();
}
catch (Exception ex)
{
Console.Write("Error publishing the post: " + ex.Message);
Console.ReadLine();
}
}
}
}
関連項目
クライアント オブジェクト モデルの SocialPostCreationData および SocialDataItem
JavaScript オブジェクト モデルの SocialPostCreationData および SocialDataItem
サーバー オブジェクト モデルの SPSocialPostCreationData および SPSocialDataItem