Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
こんにちは、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()