早く使えないかなと期待していた「View formatting」という機能がターゲット リリースのテナントで利用できるようになっていました。機能の日本語名は「ビューの書式設定」のようですね。
これまでも利用できていた「Column formatting(列の書式設定)」は、文字通り「列」の表示形式を JSON により指定できるものでしたが、この「View formatting(ビューの書式設定)」では、リストやライブラリに登録された「行」つまりは「アイテム」の表示形式を同じく JSON で指定できるものになっています。
ちなみに、Column formatting を試したときの記事は下記のリンク先です。
SharePoint Online モダン リストの Column formatting を試してみた
https://idea.tostring.jp/?p=3163
これにより、モダン リストにおけるビューの表現力がグッと高まると思います。さっそく試してみましょう。
View formatting の設定を開く
View formatting の設定は、ビューのメニューの中にあります。下図のようにたどると設定パネルが開きます。
2 種類のカスタマイズ方法
まず、View formatting では、カスタマイズの方法として 2 種類が用意されているようです。それが「additionalRowClass」と「rowFormatter」です。
「additionalRowClass」では、アイテムの表示形式をそれほど変えずに、条件に応じた色分けなどを行うことができます。たとえば、アクセスしたユーザーが作成したアイテムだけ背景色を変えるとか、期限が切れたアイテムだけ背景色を変えるとか、そうしたカスタマイズが行えます。
「rowFormatter」では、アイテムの表示形式を丸ごと変えることができます。複雑にはなりますが、JSON を記述することで任意の HTML を書き出すことができます。より表示形式に拘りたい場合は、こちらを利用することになりますね。
additionalRowClass
それでは、まずは additionalRowClass から試してみましょう。リスト アイテムの中で、自身が作成したアイテムのみに背景色を設定してみます。
{
"schema": "https://developer.microsoft.com/json-schemas/sp/view-formatting.schema.json",
"additionalRowClass": "=if([$Author.email] == @me, 'sp-field-severity--good','')"
}
これを設定すると、つぎのようになります。
さらに、入力した日付(Due Date)が以前のものをより目立たせてみましょう。
{
"schema": "https://developer.microsoft.com/json-schemas/sp/view-formatting.schema.json",
"additionalRowClass": "=if([$Author.email] == @me, if([$Due_x0020_Date] <= @now, 'sp-field-severity--severeWarning', 'sp-field-severity--good'), '')"
}
これを設定すると、つぎのようになります。
これだけでもグッと見やすくなりますね。
rowFormatter
つぎは、rowFormatter を試してみます。例えば「タイトル(Title)」「本文(Body)」の列を持つリストに対して、つぎのような JSON を設定してみます。この時、ビューにはあらかじめ「タイトル」「本文」「更新日」「更新者」が表示されるように設定しておきます。
{
"schema": "https://developer.microsoft.com/json-schemas/sp/view-formatting.schema.json",
"hideSelection": true,
"hideColumnHeader": true,
"rowFormatter": {
"elmType": "div",
"attributes": {
"class": "sp-row-card"
},
"style": {
"width": "100%",
"display": "block"
},
"children": [
{
"elmType": "div",
"style": {
"display": "table"
},
"children": [
{
"elmType": "div",
"style": {
"display": "table-cell",
"vertical-align": "top"
},
"children": [
{
"elmType": "img",
"attributes": {
"src": {
"operator": "+",
"operands": [
"/_layouts/15/userphoto.aspx?size=S&accountname=",
"[$Editor.email]"
]
}
},
"style": {
"border-radius": "50%",
"border": "solid 1px #ddd",
"padding": "0",
"margin": "0"
}
}
]
},
{
"elmType": "div",
"style": {
"display": "table-cell",
"padding": "0 0 0 12px"
},
"children": [
{
"elmType": "div",
"txtContent": "[$Title]",
"style": {
"font-size": "21px",
"vertical-align": "top"
}
},
{
"elmType": "div",
"txtContent": "[$Body]",
"style": {
"vertical-align": "top"
}
},
{
"elmType": "div",
"style": {
"vertical-align": "top",
"margin": "12px 0"
},
"children": [
{
"elmType": "span",
"txtContent": "[$Modified]"
},
{
"elmType": "span",
"txtContent": " / "
},
{
"elmType": "span",
"txtContent": "[$Editor.title]"
}
]
}
]
}
]
},
{
"elmType": "div",
"style": {
"width": "100%",
"font-size": "14px",
"background-color": "#f4f4f4"
},
"children": [
{
"elmType": "div",
"style": {
"margin": "0 10px"
},
"children": [
{
"elmType": "span",
"txtContent": "操作:"
},
{
"elmType": "button",
"txtContent": "詳細",
"customRowAction": {
"action": "defaultClick"
},
"attributes": {
"class": "sp-row-button"
}
},
{
"elmType": "button",
"txtContent": "編集",
"customRowAction": {
"action": "editProps"
},
"attributes": {
"class": "sp-row-button"
}
},
{
"elmType": "button",
"txtContent": "削除",
"customRowAction": {
"action": "delete"
},
"attributes": {
"class": "sp-row-button"
}
}
]
}
]
}
]
}
}
すると…
といった形で表現を変えることができます。これは楽しいですね。
さいごに
この新しい「View formatting(ビューの書式設定)」を利用することで、さまざまな表示を行うことができます。また、View formatting と Column formatting は併用することもできますし、アイテム個別の入力フォームなどは PowerApps を使ってカスタマイズもできます。
SharePoint Online のモダン リストでは、SharePoint Designer によるカスタマイズはできませんが、こうした機能を利用することで、より使いやすくカスタマイズできそうですね。
この機能の公式ドキュメントは、下記のリンク先です。
ビューの書式設定を使用して SharePoint をカスタマイズする
https://docs.microsoft.com/ja-jp/sharepoint/dev/declarative-customization/view-formatting
また、GitHub ではいくつかのサンプルが公開されています。
SharePoint View Formatting samples
https://github.com/SharePoint/sp-dev-list-formatting/tree/master/view-samples
ぜひお試しくださいー。