サーチ…


備考

概念階層

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(サイトタイトル取得)

2013年

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();
}


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow