SharePointリスト 列の内部名と調べ方(日本語、エクセル取込み)

はじめに

Power AppsやPower Automateでよく使うSharePoint リスト(Microsoft Listsとしても同様)ですが、
列の内部名については作り方によって見づらいものになります。その辺と調べ方になります。
SharePointでは昔から有名な事項なので調べると色々記事は出てきますが、ブログを書く際などによく出てきたりするので、エクセル取込み時やDataverseの場合と絡めて記事にしました。

SharePointの列の内部名は日本語や記号の場合にエンコードされてる

この部分についてはSharePointでは有名な事柄なんですが、ポイントとしては、
列の内部名は日本語や記号など入っていると以下のようにクチャクチャっとエンコードされたものになっているというものです。

Code列:「承認期限」という名前で列を作ると、「_x627f__x8a8d__x671f__x9650_」となるなど
→Power AppsやAutomateで使用する場合、これに「OData_ 」を先頭に付けたものを使用する

この辺り記事に書こうと思ったのですが、以下公式サポートの「Japan Dynamics CRM & Power Platform Support Blog」に詳しく載っていたので、内部名とはや、エンコードされるパターン、見つけ方などはこちらご参考ください。

確認方法のみ抜粋しますが記事のとおり、リストの設定画面で列を選択して列の編集画面の上部URLを見ます。
Field=より後の部分が内部名となります。

TIPS先頭が数字や記号、日本語の場合はエンコードされて_から始まるものになっている。
利用時はさらに先頭にOData_を付けた値を使用する

内部名は厳密には「EntityPropertyName」が使用される

ここまで内部名と言ってきましたが、通常は内部名と言えば「IntarnalName」列というのがあり、
URLで確認できるのもその値となります。

Power Apps やPower Automateで使用する内部名はこの「IntarnalName」ではなく「EntityPropertyName」
の方になります。
EntityPropertyNameは英語の場合はIntarnalNameと同じですが、先頭が記号や数値、日本語で始まる場合は「OData_」が追加された値を保持しています。
これを使用しているため、OData_を内部名に追加して利用する。ということになります。

以下の記事ではそのあたりが詳しく書いてあるので、気になる方はご参考ください。
※通常は本記事で書いてあるレベルの把握で良いと思います。

参考記事:SharePoint 列 EntityPropertyName と InternalN… – Power Platform コミュニティ (microsoft.com)

内部名を英語にする方法

SharePointリストの列の内部名は後からは変更出来ません。
SharePoint界隈では昔から有名な事項なので、SharePointに携わっている方だと内部名を英語で作成します。
手順としては以下の流れです。まあ、最初に英語で作ってから日本語名に変更するという感じです。

TIPS① 最初に英語名で列を作成して保存する(スペースや記号なども入れない)
② 列の編集を再度開いて、列名を日本語名などに変更する

これで内部名は英語、表示名は日本語や記号含んだものとなります。
こうしておくとPowerShellなどの管理ツールで操作する際も扱いやすく、今で言うとPower AppsやPower Automateで扱う際もどの列の事かがわかりやすくなり良いです。

昔からこれが二度手間(英語で作成して変更)なので作成時に内部名を指定できるようにしてほしいよーと言われ続けていましたが、今でも変わりませんし今後もそうだと思われますw

後からの変更は出来ないので、こうなっている列を変更するには列から作り直しが必要となります。
この方法を知っている場合は最初から対応しておいた方が良いかなーと思います。

エクセルからの取り込み時は特定の列名となる(取り込み方法によっては解消できる)

エクセルからテーブルをインポートしてSharePointリストをデータ込みで作成できるという素晴らしい機能があるのですが、この方法だと英語の列名を付けていても「field_1」、「field_2」、「field_3」となってしまうという点があります。内部名がこうなってしまうとどの列なのかがわかりずらいものはデメリットですね。。
これが嫌な場合はSPO上で手動で作成するか、以下の方法で取り込むかとなるかと思います。

エクセルからインポートで解消!

この点について、SPO側で取込みするとこうなるけども、エクセル側からインポートとすると内部名で取り込まれる(がグリッドビュー編集で開くようになる?)という記事を@yurimiyasakuraさんが書かれてますのでご参考ください。

TIPSこの点は技術サポートしていると何度か聞いたりしました。せっかくエクセルから楽に作れるのにもったいないですね。
上記記事を参考にエクセル側からのインポートで作成するとこの点は解消するかと思います。

出来れば内部名を付けるほうがいいがそれほど気にしなくていいかもしれない

個人の感想ですが、昔ほど内部名をシステムで扱うケースは多くないので、市民開発の範囲でPowerAppsやAutoamteで使うケースであれば、それほどまで気にしなくてよいかもしれません。

PowerAppsだと表示名でインテリセンスが出て使えますし、Automateでも動的コンテンツで表示名でみれます。
ただ、一部関数では内部名を指定する必要があったり、AutomateでJSONや数式で扱う場合は内部名になってます。
なのでわかりやすいに越したことはないとは言えます。

考え方としては、
・知っているなら英語名で内部名を作成しておく。

ただし、運用しているものを修正しようとすると列の作り直しになってしまうので、それが困難な場合は
・本記事などを参考に確認方法などを把握して対応する
・引継ぎなどを考慮するなら列の表示名と内部名の一覧を用意しておいて補完する
みたいな感じでカバーすればよいかと思います。

画像列の場合は問題がある様子!

NOTEこの記事を書いているとタイムリーに以下記事でコルネさんが、画像列の場合に内部名がこの状態だと登録されないエラーがあると報告されています。(2024/1/14時点)
今後修正されるかもしれませんが、この場合は英語名で画像列を作成し直した方がいいですね。
(2024/01/14)Power AppsでSharePoint リスト(Microsoft リスト)の画像列を利用する場合の注意点 – コルネの進捗や備忘録が記されたなにか (hatenablog.com)

Dataverseの場合は作成時に指定できる

Dataverseの場合は列を作成する際にスキーマ名を指定できます。
注意点としてはこの際にスキーマ名を決定出来ますが、論理名というものが同時に作成されてます。
これはスキーマ名を小文字のみにしたものとなっていて、
Power AppsやAutomateで扱う場合はこの論理名の方を使います。ややこしいですね。
※Autoamteの場合、一部のみスキーマ名の利用もあり
この辺の詳細はまたDataverseコネクタの記事などで書こうと思います。

おわりに

SharePointリストはよくPower Platformで使用するデータソースとなるので、このお話はよく目にするかと思います。
内部名というものと事象、確認方法、対応策を知っていれば今後役に立つと思いますので
是非頭の片隅にでも入れておいてください!それでは。

関連記事

Power AppsでSortByColumnsやSearch関数を使用する際などに内部名を使用します。

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

ヨウセイ

ヨウセイ

一般職からSharePoint、C#、.NET系技術者へ、そこからPower App、Power Automate技術者へと転身。 ワンランク上のおっさんはPower Appsでシステム開発が出来る〜! qiitaや自社HPでも技術ブログを書いていました。

関連記事

コメント

この記事へのコメントはありません。

CONTENTS