晴れときどき雑記

日々の中で残したいこと、まとめておきたいことを書き記すブログ

【SharePoint】内部列名が短すぎる場合、1文字目がエンコードされてしまうことがある

SharePoint Online でカスタムリストに列を追加するときに遭遇した謎現象。
内部名は後から変更できない、内部名を日本語で設定するとエンコードされるから、まずは英語で設定してから表示名を変えるということを知っている前提です。
不明な方は「SharePoint 内部名」で検索してみてください。

列を追加する:正常ケース

リストの設定を開き、keke01 という名前の列を追加します。

f:id:atyuji1024:20200525232706p:plain
keke01 列を作成

すると、keke01 という列が追加されたことが確認できます。
普通の動きです。

f:id:atyuji1024:20200525233131p:plain
Field=keke01

列を追加する:異常ケース例

同じように、ke01 という列を追加します。

f:id:atyuji1024:20200525233436p:plain
ke01 列を作成

すると、ke01 という列が追加され・・・ない?
_x006b_e01 なんて列が作られてます。

f:id:atyuji1024:20200525233805p:plain
列の内部名が思ってたのと違う

この現象について、わかっていること

  • 英数字、または数字で構成された列の場合に起きる
    • 英字のみの場合は発生しない
    • 英字や数字の種類は関係ない
    • 桁数は関係ありそう。ただし、何文字以下が NG かはっきりとは調べていない
  • 同じ列名の場合、削除して作り直しても必ず発生する
  • CSOM で列作った場合も起きる
  • 作成する列の種類は関係ない

回避策

  • 内部列名は、意味の通るある程度の長さにする
    • ただし 32 字以内でないといけない
  • 内部列名に数字を使うことを避ける
    • 使う場合、勝手に列名が変わっていないか確認する
    • 変わってしまう場合、列名を再考する・または長くする