2013年1月31日木曜日

◆SharePoint サイトにライブラリを追加する

PowerShell: ◆SharePoint サイトコレクションにサイトを追加する

上記でサイトの追加まで出来たので、今度はそのサイトにライブラリを追加する。
ここでは、「データ接続ライブラリ」を追加してみた。

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016

#ライブラリ追加
$DLIB = "D接続LIB"
$web = Get-SPWeb "http://server/sites/web1"
if($web.Lists.title -notcontains $DLIB
){
 
$listid =
 
  
$web.Lists.Add($DLIB,"汎用データ接続ライブラリ","DataConnectionLibrary"
)
 
$url =
 
  
$web.Lists | ? id -eq $listid | % defaultviewurl
 $pubWeb =
 
  
[Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web
)
 
$nvnode =
 
  
New-Object Microsoft.SharePoint.Navigation.SPNavigationNode($DLIB,$url
)
 
$prvnode =
 
  
$pubweb.Navigation.CurrentNavigationNodes | ? title -eq "ドキュメント"
 $pubweb.Navigation.CurrentNavigationNodes.Add($nvnode,$prvnode)
}

基本的には、3行目でWebサイトを取得して、その「Lists」コレクションに「Add」してあげれば良い。

Add(ライブラリ名称,説明,ライブラリの種類)
としてあげれば良いのだが、このライブラリの種類(テンプレート)をどう指定すればよいのかちょっと考えてしまう。

きっと英語ならそのままなのだろうが・・・。

サイトテンプレートは「Get-SPWebTemplate」が用意されていたが、ライブラリの場合はWebサイトのインスタンスから直接取得できるようだ。

ただし、「Add」メソッドに指定するのは日本語ではないので、果たしてどのプロパティか?となるのだが、眺めてみても今一つしっくりこない。

とりあえず「Type」が使えた(どのライブラリでも使えるのかは?)。

image

ライブラリの追加自体はこれでOKとなったのだが、通常ライブラリはサイドリンクバーに表示する。

これをGUIでやるには「サイトの設定」メニューで「ナビゲーション」を選び、
image

「構造ナビゲーション」で「現在のナビゲーション」に追加してあげれば良い。
image

これを「PowerShell」でやるために、9,10行目で現在のWebサイトの「PublishengWeb」を取得。(それって何?って話もあるが、とりあえずGUIメニューで選んだ「ナビゲーション」そのものと思っておく)

あとは15行目で、「PublishengWeb」の「Navigation」ノードに追加してあげれば良い。

追加するにはライブラリを「SPNavigationNode」オブジェクトにしないといけないのだが、これは「名前」と「url」から直接コンストラクトできる。

15行目の「CurrentNavigationNodes」が返してくる「SPNavigationNodeCollection」には「Add」メソッド以外にも「AddAsFirst」と「AddAsLast」メソッドがあり、後ろに追加していくだけなら「AddAsLast」を使った方が簡単だが、2013ではトップサイトのナビゲーションに自動で「最近使った項目」なるものが表示される。(非表示にもできるが)
image

できればそいつの前に追加したかったので、「ドキュメント」ライブラリを見つけて、その後ろに追加する事とした。

また、7,8行目では追加したライブラリのURLを取得している。
通常であれば第1引数で指定したタイトルがそのまま使われるのだが、タイトルに日本語を含む場合はその部分が削除されるようだ。
例えば、「D接続LIB」であればURLには「DLIB」が使われる。
これで決め打ちしても良いのだが、一応追加されたIDで取得しなおしてURLを拾っている。
ADDメソッドにはURLを指定するオーバーロードもあるのだがSharePoint的に今一つ使い方が判っていないので・・・。

0 件のコメント:

コメントを投稿