【SharePoint Online】対象リストのコンテンツタイプ列を作成する【PowerShell】

2022年11月29日

今回は、リストコンテンツタイプに列を追加するためのスクリプトを作成しました。
CSVを読み込んで一括で作成したり、1つ1つ引数で指定して作成することもできます。
CSVで作成することで、エビデンスなども容易に保管することができますが、
もし戻り値などを確認したい場合はStart-Transcriptなどを利用ください。。。

引数について解説

[string]$importcsv => インポートするCSVのパスを指定
[string] $url => 対象サイトのURLを指定
[string] $username => ログインユーザー名を指定
[string] $password => パスワードを指定
[string]$listTitle => 対象のリストを指定
[string]$contentTypeName => 対象のリストコンテンツタイプを指定
[string]$columnName => 追加する列名を指定
[bool]$isSiteColumn=$False => サイトカラムかリストカラムかを指定
[bool]$Required=$True => 必須列か指定
[bool]$Hidden=$False => 非表示列か指定

CSVに記載できる項目は[listTitle],[contentTypeName],[columnName],[isSiteColumn],[Hidden]になります。
これは、必須ではありません。
引数で渡すこともできますので、CSVが全て同じコンテンツタイプに対しての設定であれば、
リストタイトルとコンテンツタイプ名は引数で渡したほうがCSVが冗長にならずに済みます。

また、スクリプト自体の引数は必須ではありませんが、すべての引数がMainの関数を呼び出す際には必須ですので、注意してください。
あと、リスト名やコンテンツタイプ名は表示名ですのでご注意を!

スクリプトについてざっくり解説

コンテンツタイプを作成するためには、
Microsoft.SharePoint.Client.FieldLinkCreationInformationを利用します。
そこに対して、既定の列($column)を設定し、Required, Hiddenをそれぞれ設定します。

これだけです。ちょっとグダグダと長いコードを書きましたが、実際にはこれだけです。
コンテキスト生成→FieldLinkCreationInformationを利用して列を設定→クエリ実行
この流れだけですので、引数やCSVはあまり意識しなくていいかと思います。

終わりに

今回はこのへんで終わります。
最近は列のカスタマイズばかりで嫌になりますね。。
たまにはWebアプリの作成とかやらせて頂きたいですよ神。