sharepoint
管理対象サーバーサイドオブジェクトモデル(フルトラスト)の使用
サーチ…
備考
概念階層
SharePoint概念階層では、 サイトコレクションにはサイトが含まれ、 サイトには一覧が含まれます 。サイトコレクション( SPSite
)には明示的なUIはありませんが、常に1つのルートレベルサイト( RootWeb
プロパティでアクセス可能)とそのルートサイトの下にある追加のサブサイトが常に含まれています。サイトまたはWeb( SPWeb
)にはUIがあり、リスト/ドキュメントライブラリ( SPList
)、Web SPWeb
を含むページ、およびアイテム/ドキュメント( SPListItem
)が含まれています。
サーバーサイドの警告
- Visual Studioプロジェクトで、SharePointサーバー側オブジェクトモデルを使用するアプリケーションを作成するには、Framework AssembliesにリストされているMicrosoft.SharePointアセンブリへの参照を追加する必要があります。
- サーバーサイドオブジェクトモデル(完全信頼)を使用するアプリケーションは、SharePointをホストしているWindows Server上でのみ実行できます。
- アプリケーションが実行されているサーバー以外のSharePointサーバーに接続することはできません。
Hello World(サイトタイトル取得)
SharePoint 2013以降のバージョンは64ビットのみであるため、アセンブリ/プログラムも64ビットプロセッサ用に構築する必要があります。
プロジェクトが作成された直後に、 Platformターゲットを任意のCPUからx64に切り替える必要があります。そうしないと、エラーが発生します。
using System;
using Microsoft.SharePoint;
namespace StackOverflow
{
class Samples
{
static void Main()
{
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
Console.WriteLine("Title: {0} Description: {1}", web.Title, web.Description);
}
}
}
}
SharePointファーム全体をループする
SharePoint Webサーバーから実行されたPowerShellの使用:
$wacoll = get-spwebapplication
foreach($wa in $wacoll){
if($wa.IsAdministrationWebApplication -eq $false){
foreach($site in $wa.Sites){
foreach($web in $site.AllWebs){
# your code here
$web.Dispose()
}
$site.Dispose()
}
}
}
リストアイテムを取得する
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Some list"];
// It is always better and faster to query list items with GetItems method with
// empty SPQuery object than to use Items property
SPListItemCollection items = list.GetItems(new SPQuery());
foreach (SPListItem item in items)
{
// Do some operation with item
}
}
ページングを使用してアイテムを取得する
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Some list"];
SPQuery query = new SPQuery()
{
RowLimit = 100
};
do
{
SPListItemCollection items = list.GetItems(query);
foreach (SPListItem item in items)
{
// Do some operation with item
}
// Assign current position to SPQuery object
query.ListItemCollectionPosition = items.ListItemCollectionPosition;
} while (query.ListItemCollectionPosition != null);
}
urlによるリストの取得
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
string listUrl = string.Format("{0}{1}", web.ServerRelativeUrl, "Lists/SomeList");
SPList list = web.GetList(listUrl);
}
リスト項目の作成
新しいリストアイテムを作成するとき、そのフィールドは文字列配列に似た構文を使用して設定できます。これらのフィールドはオンザフライでは作成されず、リストのスキーマによって定義されることに注意してください。これらのフィールド(または列)はサーバー上に存在していなければなりません。そうでない場合、createは失敗します。すべてのリストアイテムにはタイトルフィールドがあります。一部のリストには、アイテムがリストに掲載される前に記入する必要のあるフィールドがある場合があります。
この例では、リストはAnnouncementsテンプレートを使用しています。タイトルフィールドに加えて、リストには、アナウンスの内容をリストに表示するBodyフィールドが含まれています。
using (SPSite site = new SPSite("http://server/sites/siteCollection"))
using (SPWeb web = site.OpenWeb())
{
SPList list = web.Lists["Announcements"];
SPListItem item = list.AddItem();
item[SPBuiltInFieldId.Title] = "My new item";
item[SPBuiltInFieldId.Body] = "Hello World!";
item.Update();
}