【SharePoint Online】プロパティバッグの登録方法や使い道を考える【PowerShell】

こんにちは。
今回は古の機能(笑)プロパティバッグに関しての記事です。
先日まで全く聞いたこともない機能だったのですが、2007くらいから存在するのかな?
そんな機能に関して色々使い道や使い方を解説していこうと思います。

プロパティバッグとは
リスト アイテム、ファイル、フォルダー、または Web サイトのプロパティ バッグのカスタム プロパティおよびその値を指定します。

https://docs.microsoft.com/ja-jp/previous-versions/office/developer/sharepoint-2010/gg491703(v%3Doffice.14)

プロパティバッグとは

簡単に言うと「サイト」「リスト」「ライブラリ」に個別に作成できるカスタムプロパティのようです。
つまり、固有の値を上記3つのコンテンツに対して格納しておくことができる機能ですね。

まずは実装方法を記載していきます。
その後何に利用するか考えていきます。

解説

今回は複雑になるのを避けるために、機能ごとに関数にまとめました。
・Load-Module
→SharePointのアセンブリ読み込み(モジュールのインストールができてないとエラー)

・Get-Cred
→認証情報を取得

・Get-SiteContext
→対象サイトから情報取得リクエスト

・Set-PropertyBag
→対象サイトのプロパティバッグにKey,Valueを登録

・Start-Process
→処理実行用関数

Set-PropertyBagについて説明していきますが、
まずはじめに、今回のプロパティバッグはサイトに対してのみです。
リストコンテンツタイプやライブラリには対応してませんのでご了承ください。

Function Set-PropertyBag($objCtx, $Key, $Value){

    $objCtx.Web.AllProperties[$Key] = $Value
    try{
        $objCtx.Web.Update()
        $objCtx.ExecuteQuery()
        return $true
    }catch{
        Write-Host "プロパティバッグの登録に失敗しました。"
        return $null
    }
}

プロパティバッグの本体は「AllProperties」に存在します。
そしてKey,Valueの形で値を格納することができます。
後はいつもどおりUpdate、ExecuteQueryを実行すれば登録完了!

何に利用すればいいのか考える

今ボクが考えついたのは、例えばTeamsの有効期限を格納しておく(以前の記事)ことや、
サイトの担当者を格納しておくなどですかね。
担当者はGUIでも確認できますが、
スクリプトで簡単に取得できるようにしておくことは有益だと思います。
Teamsの有効期限を格納しておければ、いちいちADに接続しなくても済みますのでこれも
まあまあ便利かなと・・・
いや、やっぱり、現在のSPOは便利になっているのでわざわざ上記のような多重管理になるプロパティは登録しなくていいかもしれません。
利用するシーンは固有のプロパティ、つまり会社固有の部門コードを格納したりなどですかね。
もうわからん・・・(笑)

おそらくこの機能があまり周知されていないのもこの扱い方の難しさによるものですね。
MSはあまりSPOをカスタムされたくないようですし、
すっかりGUIの既存機能で賄えるところまで来ていますので。

終わりに

今回は以上にしておこうと思います。
色々愚痴ってしまいましたが、実際SharePointを使い込もうとする企業ではわりかし利用するという話も聞きましたので覚えておいて損はないかなと思いますよ!

それではまた。