背景
SharePoint Online(以下、SPO)でリストを多く扱っていると、手動で列を1つずつ登録するのが非常に面倒になります。
「いやいや、GUIでもテンプレート機能あるでしょ?」と思うかもしれませんが、列の微調整やリストの再利用性を高めたい時に限界を感じることも多いです。
そこで今回は、PowerShellを使って、リストの定義スクリプトを作ってみた話を紹介します。
ゴール
PowerShellスクリプトを使って、SPOリストの定義をスクリプト化し、繰り返し展開できるようにすることを目指します。
前提条件
PowerShell7が使用できる環境。
手順
1. SPOテナントでアプリ登録を行う
PnP PowerShellを使ってSPOに接続するには、アプリの登録が必要です。
公式手順はこちら → Register an Azure AD app
-
権限:
Sites.ReadWrite.All
など、必要な範囲で設定してください。 - 認証方式: クライアントID+シークレット認証
以下コードをPowerShellで実行すると、シングルテナント、指定したアプリ名でアプリ登録してくれます。
Register-PnPEntraIDAppForInteractiveLogin -ApplicationName $アプリ名$ -Tenant
一発で以下ができあがります。管理権限者に承認してもらうことも忘れないようにしてください。意外と強い権限が必要ですね。
2. PowerShell 7をインストール
Windows PowerShell(v5)ではなく、**PowerShell 7(Core)**を使います。
winget install --id Microsoft.Powershell --source winget
3. モジュールのインストール
以下の2つのモジュールをインストールします。
Install-Module PnP.PowerShell -Scope CurrentUser
Install-Module ImportExcel -Scope CurrentUser
- PnP.PowerShell: SharePoint Online の操作に使用
- ImportExcel: Excelファイルからリスト・ライブラリー定義を読み込むために使用
4. スクリプト、エクセルを以下からダウンロードし、設定値を更新
- CreateSPOList.ps1: SharePoint Online の操作に使用(設定値を更新)
- CreateSPOList.xlsx: Excelファイルからリスト・ライブラリー定義を読み込むために使用(作成する定義を更新)
5. 以下階層でメインスクリプトを実行
📂
├── CreateSPOList.ps1 ← メインスクリプト
├── CreateSPOList.xlsx ← 列定義ファイル(Excel)
作成したスクリプト列タイプとSPO列型の対応
Number: 数値
Text: 1行テキスト
Note: 複数行テキスト
Choice: 選択肢
Boolean: はい/いいえ
User: 利用者
UserGroup: 利用者グループ
Lookup: ルックアップ
LookupAdd: ルックアップ(複数)
Date: 日付
DateTime: 日付と時刻
URL: ハイパーリンク
Currency: 通貨
Thumbnail: 画像
まとめ
このような感じで便利ツールを作成してみました。日々時間見つけて、作業が楽になるように他のツールを作っていったり、既存のツールをブラッシュアップしていこうと考えております。
何かツールの要望ありましたら、コメントいただけると幸いです。
上記で展開したスクリプトファイルに課題ありましたら、githubでisuueあげていただけると幸いです。
この記事をご覧いただきありがとうございます。