Power Apps や Power Automate で SharePoint リストをデータソースとして利用する際、列名は一旦英語で作成する

# はじめに

恐らく、ライセンスの関係上、Power Apps や Power Automate で SharePoint リストをデータソースとして利用するという方も多いと思います。

また、この際、列名は英語で作成する、日本語で列名を作成したい場合においても、一旦英語で作成して、その後日本語にした方がいいと聞いたことがある人もいると思います。

※聞いたことがない方は、こちらの内容も参考にしつつ、列名は一旦英語で作成することをお勧めいたします

今回は、列名を日本語で作成した場合、Power Apps や Power Automate でアプリやフローを作成する際に具体的にどのような影響があるか、説明いたします。

# データソース

今回は、以下のような SharePoint リストを用意しました。
列名は日本語で作成しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/00b7142c-3d4e-a6b0-3177-a7af6a59f436.png)

日本語で作成していると、実は、以下のような内部名になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/56379cb2-0f00-2ecc-d55d-3d9a72d6d488.png)

# Power Apps での影響

まず、私が確認する限り、フォームコントロールでデータを登録する際、Patch 関数でデータを登録する際、特に影響はなさそうに見受けられます。個人的にもこの辺では困ったことはないです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/911f0d60-4c7d-9007-b2af-e4e9bc11681c.png)

データのフィルターも問題はなさそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/565328e4-2e98-389b-043f-b28a93c891c0.png)

しかし、検索やソートをする際は内部名が表示されており、どの列を選ぶといいか分かりにくくなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/31e29347-068e-c806-ebbe-767b961716d2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/7cd3acad-ea4d-0be9-cf06-ab5fe56bdef1.png)

# Power Automate クラウドフローでの影響

以下は、お問い合わせを管理する Power Apps で作成したアプリにおいて、希望納期が近付いている案件について、担当者にリマインドメールやチャットをするクラウドフローですが、動的なコンテンツで利用する際は、特に影響はなさそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b62879d8-f76c-b157-e6d9-9a4e2474b486.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/08104a5f-8723-b765-992e-58fb1cb81400.png)

しかし、以下のようにフィルターをしたい際、内部名を使用する必要があります。市民開発者の方にとって、OData フィルターは結構難しいと思うので、日本語で列名を作成していると更に難しく感じるかもしれません。

※Power Automate クラウドフローでデータのフィルターはよく使います。例えば、Power Apps でトレーニングの予約管理をするアプリを作成し、トレーニング数日前になったらステータスを変更して新規予約ができないようにしたい際、Power Automate クラウドフローを利用することでこの処理を自動化できます。具体的には、SharePoint リストから特定の条件 を満たす (トレーニング開始日列と現在の日付を利用して) 行だけ抽出して、ステータスを変更いたします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/f2e7eaff-4dff-18da-e609-ecfcb4c66778.png)

なお、以下をオンにしておくと、内部名を書かなくてもフィルターできますが、選択肢列を利用する場合は、少なからず内部名をベースに記述をする必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8facb63d-0a55-0cb3-7977-696ffb359f30.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/afb767c3-e52e-6b03-05ce-2325be76645d.png)

また、以下のブログで触れられているトリガー条件を利用する際も内部名を利用する必要があります。
こちらのトリガー条件、例えば、データの変更があった場合、かつ特定の条件を満たす場合のみ自動処理したい場合などに使います。
逆に、こちらを設定しないと、データが変更されるたび、つまり、意図しないタイミングでもフローが動作してしまい、無駄な処理が大量に発生してしまうリスクがあります。

https://jpdynamicscrm.github.io/blog/powerautomate/cloudflow-trigger-condition/

個人的に、どちらも結構使う機能であるものの、以下のような表記が出てくると
時間を要してしまう、場合によっては挫折してしまう可能性があると考えます。

```
OData__x30ea__x30de__x30a4__x30f3__x30 
```

# もし日本語で作成してしまった場合

日本語で列名を作成してしまった場合の影響を説明してきました。
列名を一旦英語で作成して、必要に応じて日本語に変更した場合は、内部名は英語のままのため、上記のような処理をする際、混乱しなくて済むと思います。

そのため、改めてとはなりますが、**SharePoint の列名は一旦英語で作成することをお勧めします。**

:::note warn
仮に日本語で列名を作成してしまったことで、Power Apps で検索やソートをする際に内部名が表示されているためどの列を選べばよいか分からない、内部名が分からず Power Automate でフィルター条件を書けない、といったことで困る場合は、以下、リストの設定から確認可能です。

それぞれの列をクリックして、以下黄色の個所と "OData_" を連結します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/a9ed3f5d-2b07-8b3b-5ac2-07d242c4976c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/cd0f7f4b-3b45-2360-1698-9580f931429b.png)
:::