PowerShell サンプル – ビューの作成、取得、編集、削除

こんにちは、SharePoint サポートの佐伯です。
今回の投稿では、PowerShell を使用してビューの基本的な操作を実施する方法についてご紹介します。
あまり PowerShell のご経験がない方にも分かりやすくするために、ここではシンプルなサンプルをご紹介していきます。目的の処理を実装する際にご参考になりましたら幸いです。
実装の際は MSDN の資料も合わせてご参照ください。

 

■ビューの作成

#サイトを取得します。
$web = Get-SPWeb <Web サイトの URL>;
#リストを取得します。;
$list = $web.Lists["<リスト名>"];
#ビューのコレクションを取得します。;
$views = $list.Views;
#ビュー名を設定します。
$viewName = "<ビュー名>"
#ビューに表示する列を設定します。
$viewFields = New-Object System.Collections.Specialized.StringCollection
$viewFields.Add("<列の内部名>")
$viewFields.Add("<列の内部名>")
#クエリを設定します。
$query = '<CAML 文字列>'
#表示するアイテム数を設定します。
$rowLimit = <アイテム数>
#指定のアイテム数に制限して表示するかページングを行うかを設定します。
$paged = <True または False>
#ビューを既定のビューにするかを設定します。
$defaultView = <True または False>
#ビューを追加します。
$view = $views.Add($viewName, $viewFields, $query, $rowLimit, $paged, $defaultView)

 

例) タイトル順にアイテムを表示するビューを追加する
$web = Get-SPWeb https://sharepoint/sites/team $list = $web.Lists["ニュース"]
$views = $list.Views
$viewName = "タイトル順"
$viewFields = New-Object System.Collections.Specialized.StringCollection
$viewFields.Add("LinkTitle")
$viewFields.Add("Modified")
$query = '<OrderBy><FieldRef Name="LinkTitle" /></OrderBy>'
$rowLimit = 30
$paged = $true
$defaultView = $false
$view = $views.Add($viewName, $viewFields, $query, $rowLimit, $paged, $defaultView)

 
■ビューの取得

#サイトを取得します。
$web = Get-SPWeb <Web サイトの URL>
#リストを取得します。
$list = $web.Lists["<リスト名>"]
#ビューのコレクションを取得します。
$views = $list.Views
#ビューを取得します。
$view = $views[<インデックス番号、ビュー名、またはビューの GUID>]
#ビューのプロパティ値を取得します。
$view.<ビューのプロパティ>

 

例) ビュー名を取得する
$web = Get-SPWeb https://sharepoint/sites/team $list = $web.Lists["ニュース"]
$views = $list.Views
$view = $views[0]
$view.Title

例) ビューの GUID を取得する
$web = Get-SPWeb https://sharepoint/sites/team $list= $web.Lists["ニュース"]
$views = $list.Views
$view = $views["すべてのアイテム"]
$view.ID

例) ビューのサイト相対 URL を取得する
$web = Get-SPWeb https://sharepoint/sites/team
$list = $web.Lists["ニュース"]
$views = $list.Views
$guid = [System.Guid]("51352a9b-f6af-47a1-9377-b63ebfb6e6c8")
$view = $views[$guid]
$view.Url

参考 : その他の <ビューのプロパティ> は下記の資料をご参照ください。
https://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spview_properties(v=office.15).aspx

 

■ビューの編集

#サイトを取得します。
$web = Get-SPWeb <Web サイトの URL>
#リストを取得します。
$list = $web.Lists["<リスト名>"]
#ビューのコレクションを取得します。
$views = $list.Views
#ビューを取得します。
$view = $views[<インデックス番号、ビュー名、またはビューの GUID>]
#ビューのプロパティに値を設定します。
$view.<ビューのプロパティ> = <変更後のプロパティ値>
#ビューを更新します。
$view.Update()

 

例) ビュー名を更新する
$web = Get-SPWeb https://sharepoint/sites/team $list= $web.Lists["ニュース"]
$views = $list.Views
$view = $views["すべてのアイテム"]
$view.Title = "すべてのニュース"
$view.Update()

例) アイテム 20 毎にページングされるよう設定する
$web = Get-SPWeb https://sharepoint/sites/team $list = $web.Lists["ニュース"]
$views = $list.Views
$view = $views["すべてのニュース"]
$view.Paged = $true
$view.RowLimit = 20 $view.Update()

参考 : その他の <ビューのプロパティ> は下記の資料をご参照ください。
https://msdn.microsoft.com/ja-jp/library/microsoft.sharepoint.spview_properties(v=office.15).aspx

 

■ビューの削除

#サイトを取得します。
$web = Get-SPWeb <Web サイトの URL>
#リストを取得します。
$list = $web.Lists["<リスト名>"]
#ビューのコレクションを取得します。
$views = $list.Views
#削除するビューの GUID を変数にセットします。
$guid = [System.Guid]("<GUID 文字列>")
#ビューを削除します。
$views.Delete($guid)

 

例) ビューを削除する
$web = Get-SPWeb https://sharepoint/sites/team
$list = $web.Lists["ニュース"]
$views = $list.Views
$guid = [System.Guid]("a8271a7d-14ba-4fb5-a068-66f75f67b9ee")
$views.Delete($guid)

 

- 補足
目的の処理を実施した後は、SPWeb.Dispose メソッドを使用して SPWeb オブジェクトを閉じ、リソースを解放します。

$web.Dispose()

 

例) 登録日の降順でアイテムを表示するビューを追加する
$web = Get-SPWeb https://sharepoint/sites/team
$list = $web.Lists["ニュース"]
$views = $list.Views
$viewName = "登録日(降順)"
$viewFields = New-Object System.Collections.Specialized.StringCollection
$viewFields.Add("LinkTitle")
$viewFields.Add("Created")
$viewFields.Add("Author") $query = '<OrderBy><FieldRef Name="Created" Ascending="FALSE" /></OrderBy>'
$rowLimit = 30
$paged = $true
$defaultView = $false
$view = $views.Add($viewName, $viewFields, $query, $rowLimit, $paged, $defaultView)
$web.Dispose()