今回はPowerShellを使ってSharePointOnline上にカスタムリストを作成する方法などについて説明してみます。
事前準備
PowerShellのスクリプトを実行する際に必要なSDK等がありますので、その辺のインストール等がまだの方は↓の記事を参考に準備しておいてください(∩´∀`)∩
SharePoint Online Client Component SDK というヤツを使います。
インスタンス作成と設定
接続等行った状態から説明していきます。その辺は記事末尾のサンプルコード内には書いておきますので、そちらも参考にしていただけたらと。
まずはリストオブジェクトのインスタンスを作成し、タイトルやテンプレートタイプなどを設定します。サンプルは↓
1 2 3 4 5 6 7 8 |
# リストオブジェクトのインスタンス作成 $Newlist = New-Object Microsoft.SharePoint.Client.ListCreationInformation # リストタイトルを指定 $Newlist.Title = 'HogeHoge' # テンプレートタイプを指定 $Newlist.TemplateType = 100 |
ここで設定するリストタイトルはリストの内部名で、URLに出てくるヤツです。サンプルコードだと下のようなURLになります。
https://xxxx.sharepoint.com/sites/testSite/Lists/HogeHoge
次にテンプレートタイプですが、100 が通常のカスタムリストの番号です。その他よく使いそうな所だと下記のような物があります。
- ドキュメントライブラリ 101
- アンケート 102
- リンク 103
- 予定表 106
その他は下記MSのページに記載があります。
https://learn.microsoft.com/en-us/previous-versions/office/sharepoint-server/ms413878(v=office.15)
リスト作成
1 2 3 4 5 6 7 8 9 10 11 |
# Contextにリストの情報をAdd $list = $Context.Web.Lists.Add($Newlist) # タイトル(表示される方)を設定 $list.Title = "ほげほげ" # 更新 $list.Update() # 上記の更新を実行 $Context.ExecuteQuery() |
リスト作成の前にリストの表示名を変更したい場合はここで設定します。設定しない場合は内部名と同じ名称でリストが作成されます。
また、同様にその他の設定等を変更することも可能です。ISEなどで編集しているならインテリセンスで候補を出してくれるので活用しましょう。

下記MSのページにプロパティの一覧と説明もありますので、詳しく知りたい場合はそちらも参照ください。
https://learn.microsoft.com/en-us/previous-versions/office/sharepoint-server/ms443729(v=office.15)
ここまでのコードを実行すると対象のサイト上にリストが作成されます。

まとめ
似たようなサイトを作って、毎回そこに同じリストを作成している。そんな時にはPowerShellを使って簡単に作業を行えるようにしておくと楽ちんです。
リストの作成自体は割と簡単にできますので、是非試してみて下さい(∩´∀`)∩
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client") | Out-Null [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime") | Out-Null #接続情報等 $SiteUrl = "https://xxxx.sharepoint.com/testsite" $Account = " administrator@xxxx.onmicrosoft.com" $Password = Read-Host -Prompt "Enter Password." -AsSecureString # Credential作成 $Credential = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Account, $Password) # Context作成 $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl) $Context.Credentials = $Credential # リストオブジェクトのインスタンス作成 $Newlist = New-Object Microsoft.SharePoint.Client.ListCreationInformation # リストタイトル(内部名)を指定 $Newlist.Title = 'HogeHoge' # テンプレートタイプを指定 $Newlist.TemplateType = 100 # Contextにリストの情報をAdd $list = $Context.Web.Lists.Add($Newlist) # タイトル(表示される方)を設定 $list.Title = "ほげほげ" $list. # 更新 $list.Update() # 上記の更新を実行 $Context.ExecuteQuery() # 後始末 $Context.Dispose() |