サイトコレクションにカスタムアクション(Custom Action)を追加してみた

SharePoint Onlineって言わずもがなクラウドサービスなんですが、ユーザ様によってはガンガンマスターページ更新します。(seattle.master、oslo.master)

私の記憶が確かならば、マスターページを編集してしまうとアップデートがマスタページに適用されません。(←現時点でどうかは調べてないです
致命的なバグフィックスなども適用されなくなります。とは言え所詮テキストファイルなので、バグフィックス部だけ転記すりゃいいじゃんって。まあそうなんですけど、例えばユーザ部門が各々管理しているマスターページに対して全て展開できますか、って話で。なのでマスターページの編集は極力止めましょうと。

ただ、とは言えやっぱり編集したい場面ってあって、例えば共通スクリプト(jQueryなど)、スタイルの参照したくてスクリプトリンク書きたいっすよね。
てことで、マスターページを変更しないでそれらをなんとかしてみましょう、ってのが今回の主題です。

便利そうなものがgithubにあります。
https://github.com/johnnliu/UserCustomActionsConfigPage/tree/master/dist

このaspxを適当なWikiページライブラリに置きます。(スクリプトリンクで外部URLを参照しているので気になる方は、参照しているJSファイルを自テナントにおいてそこを参照するようにしましょう)。なお、モダンUIだとアップロードができそうになかったのでクラシック表示にしています。

アップロードしたaspxファイルを開きましょう。

Urlにはスクリプトリンクとして追加したいスクリプトファイルを入力、あとはスコープに応じたボタンを押すだけです(サイトコレクション[Install Site Collection] or サイト[Install Current Web])。

トップレベルサイトのサイトのリソースファイルライブラリに置いたjQueryを参照してみます。

適当なページで見てみましょう。

参照できてますねー素敵ですねー。適用範囲は詳しくわからないのですが、サイトの設定とかでも参照できているので、かなり広いでしょう。なお、モダンUIは適用範囲です。

同じようにスタイルシートも設定してみましょう。

登録できました。画面を見てみましょう。(サイトのロゴを消すようにしました)

いいですねー消えてます。CSSもちゃんと適用されます。
消したい時は消したいUrlを入力した上で「Uninstall …」を押すと消えます。

と、紹介しといてなんですが私はこの機能を実運用で使ってるのを見たことがないのでやる場合は自己責任でお願いします。

参考:The easiest way to add Script and Brand your SharePoint and SharePoint Online
http://johnliu.net/blog/2015/12/the-safest-future-proof-way-to-brand-your-sharepoint-and-sharepoint-online