SharePoint リストの表示フォームの本文を全文表示したい（できない）

# SharePoint リストの表示用フォームの本文を全文表示したかったけどできなかったという話
SharePoint でポータルを作っていると SharePoint リストを利用したお知らせ的な何かを作ることはよくあることだと思いますが、デフォルトの状態だとリストの項目をクリックしてフォームを表示させても「本文」の表示は 3 行程度で「表示数を増やす」をクリックしないと全文が読めないような形式になっていると思う。

これをカスタマイズして最初から全文表示できれば読みやすいよね？ってことでいろいろ調べているけど、カスタマイズの方法は大きく分けて 2 つあって、統合から Power Apps でフォームのカスタマイズでフォームごと作り直してしまう方法と、フォームを開いてフォームの編集からレイアウトの構成で書式設定を開いて JSON を記述する方法がある。

Power Apps を使えばある程度のカスタマイズは可能なのだと思うけど、これはこれで結構面倒な感じなので、 JSON でサクッとカスタマイズできないかを中心的に調べている。ちなみに Microsoft の公式の説明は以下に存在している。

https://learn.microsoft.com/ja-jp/sharepoint/dev/declarative-customization/list-form-configuration#configure-custom-body-with-one-or-more-sections

ここの記述を見る限り「本文」部分は以下の制限があると思われる。
> ヘッダーやフッターとは異なり、本文の構成では、1 つ以上のセクションを定義し、それらの各セクションに 1 つ以上の列を追加することしかできません。

まあ、やっぱだめなのかーと思いつつ、せっかくなので Google Bard にも聞いてみた感じだと以下の回答を得られた。

## Google Bard とのやり取り
**SharePoint リストのフォームにある本文の表示数を最初から増やす JSON の記述を教えてください。**

はい、喜んでお答えします。

SharePoint リストのフォームにある本文の表示数を最初から増やす JSON の記述は次のとおりです。
```json:JSON
{
  "layouts": [
    {
      "type": "field",
      "fieldId": "Body",
      "label": "本文",
      "size": "300"
    }
  ]
}
```
この JSON を SharePoint リストのフォームの `Layouts` プロパティに追加することで、本文の表示数を 300 文字に増やすことができます。

また、`size` プロパティの値を変更することで、本文の表示数を任意の数に増やすことができます。

たとえば、本文の表示数を 500 文字に増やす場合は、次の JSON を使用します。
```json:JSON
{
  "layouts": [
    {
      "type": "field",
      "fieldId": "Body",
      "label": "本文",
      "size": "500"
    }
  ]
}
```
ご不明な点がございましたら、お気軽にお問い合わせください。

**上記記述では本文の表示数は増えませんでした。フォームの書式設定で書式の設定先を本文とした場合のコードの書式設定に記載する本文の表示数を増やす JSON コードを教えてください。**

フォームの書式設定で書式の設定先を本文とした場合のコードの書式設定に記載する本文の表示数を増やす JSON コードは次のとおりです。
```json:JSON
{
  "CodeBlock": {
    "InlineSpans": [
      {
        "Text": "本文",
        "MaxLines": 10
      }
    ]
  }
}
```
このコードを適用すると、フォームのコードブロックの本文は最大 10 行まで表示されます。

**Microsoft のサイトには「ヘッダーやフッターとは異なり、本文の構成では、1 つ以上のセクションを定義し、それらの各セクションに 1 つ以上の列を追加することしかできません。」との記載があります。本当に上記の記述で本文の表示数を増やすことができますか？**

はい、できます。Microsoftのサイトには「ヘッダーやフッターとは異なり、本文の構成では、1 つ以上のセクションを定義し、それらの各セクションに 1 つ以上の列を追加することしかできません。」と書かれていますが、これはあくまでもデフォルト設定です。セクションごとに列数を増やすことで、本文の表示数を増やすことができます。

例えば、本文の構成で2つのセクションを定義し、各セクションに3つの列を追加した場合、本文の表示数は6列になります。このように、セクションごとに列数を増やすことで、本文の表示数を増やすことができます。

ただし、本文の表示数を増やすと、本文のレイアウトが崩れてしまう場合があります。そのため、本文の表示数を増やす際には、本文のレイアウトが崩れないように注意する必要があります。

**セクション内の本文の項目の表示数を増やすのではなく、本文の内容が表示できる表示数を増やせる JSON コードを教えてください。デフォルトの表示では本文の内容が 3行ほどと「表示数を増やす」のリンク表示になっています。この 3行を最初から全文表示できる JSON コードが知りたいです。**

はい、わかりました。セクション内の本文の内容を最初から全文表示できる JSON コードは次のとおりです。
```json:JSON
{
  "body": {
    "style": {
      "maxLines": 9999
    }
  }
}
```
このコードを設定することで、セクション内の本文の内容が最初から全文表示されます。
## 結果
まあ、いろいろと自信満々に回答を出してくれている訳だが、結論としてはどれも有効ではなかった。そもそも本文を指定してコードの書式設定に対応していない JSON コード（おそらく対応しているコードは`"sections": [`くらいだと思われ）を記載してしまうと本文欄が丸ごと消えてしまう。

と、言うわけで SharePoint リストのフォームで最初から本文を全文表示させることは JSON だけではできなさそうだという結論に達しました。 Power Apps 使ってフォームごと作り直すのはちょっと面倒だなぁ…
## おまけ
SharePoint リストのビュー表示のカスタマイズ、例えばコマンドバーの不要なアイコンを非表示にするくらいなら結構簡単にできる。以下が JSON の記述例。
```json:JSON
{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/row-formatting.schema.json",
  "commandBarProps": {
    "commands": [
      {
        "key": "editInGridView",
        "hide": true
      },
      {
        "key": "share",
        "hide": true
      },
      {
        "key": "copyLink",
        "hide": true
      },
      {
        "key": "comment",
        "hide": true
      },
      {
        "key": "automate",
        "hide": true
      },
      {
        "key": "export",
        "hide": true
      },
      {
        "key": "integrate",
        "hide": true
      }
    ]
  }
}
```
公式の情報は以下。

https://learn.microsoft.com/ja-jp/sharepoint/dev/declarative-customization/view-commandbar-formatting

JSON で本文カスタマイズできる方法とか情報あったら求む…