技術情報ブログ
Power Platform
2021.07.16

Power AppsとSharePoint連携:SortByColumns関数で日本語列を使用する際の注意点(内部列名と外部列名)

こんにちは、アーティサン株式会社の池内佑哉と申します。

私は、Microsoft社が提供するPower AppsやSharePointを用いて業務の自動化・効率化を目指されているお客様のご支援をしています。

 

今回は、SharePointの仕様がPower Appsとかみ合わずエラーになる、という内容のお話です。

 

Power Appsには、SharePointのリストを基にキャンバスアプリを自動作成する機能があります。

この機能を利用することで、レコードの追加、編集、削除機能が設定されたアプリが自動的に作成されます。

そのため、初めてPower Appsに触る方でも、標準的な機能が設定されたアプリを作成・利用することができます。

もちろん、そのまま使ってもよいですが、ほとんどの場合、ちょっと機能を追加したい、使い勝手を良くしたいなどの要望が出てきます。

しかし、SharePointのリストとPower Appsには、普段触らない方はほとんどがハマるといってもよいほど、混乱を招く仕様があります。

この仕様は製品がリリースされた当初から存在する、いわば“SharePoint/Power Appsあるある”なのですが・・・、

私自身も初めての案件対応の際、うっかりこの仕様に引っ掛かり悩んだことがあります。

 

弊社には、エンドユーザー様ご自身で運用していきたいという要望を多くいただいています。

そういったエンドユーザー様を始め、これからPower AppsやSharePointでの学習を始めようとされている方に、ぜひとも覚えていただきたい内容だと考え、今回取り上げてみました。

 

Power Apps キャンバスアプリによる現象の再現(SortByColumns関数)

それでは、本題に移ります。

今回は、Power Appsのキャンバスアプリにて、SortByColumns関数を使い、ソート順を[タイトル]順から[発行日]順に変更するケースについて考えます。

まず、SharePointリストに[発行日]という列を追加し、Power AppsにてSharePointリストをデータソースとして指定したキャンバスアプリを作成します(図1)。

SharePointリストに[発行日]列を追加

SharePointリストに[発行日]列を追加

 

次に、Power Apps キャンバスアプリ内にて、SharePointリストのデータを[発行日]順にソートするように変更します。

具体的には、Power Apps キャンバスアプリ内のBrowseGallery1のItemsにある、SortByColumn関数の値を変更します。

初期値では、ソートする列を指定する引数(第2引数)に“Title”が入っており、ソート順は昇順になっています。

このソート対象を”Title”から”発行日”に書き換えます(図2)。

想定であれば、データの表示が[発行日]順になるはずですが、エラーが発生してしまいます。

Power Apps キャンバスアプリのSortByColumns関数で引数の値を変更すると、エラーが発生

Power Apps キャンバスアプリのSortByColumns関数で引数の値を変更すると、エラーが発生

SortByColumn関数のエラー内容

SortByColumn関数のエラー内容

エラー内容より、[発行日]列が存在しないことがわかります。正しく列名を指定しているはずなのに、なぜこのようなエラーが発生するのでしょうか?

 

エラー原因(SharePointリストの内部列名と外部列名)

SharePointのリストで列を追加する際、列名を日本語などのマルチバイト文字で登録すると、見かけはそのまま登録されますが、実は内部ではエンコードされた値で登録されます。

※スペースなどの半角記号も同様にエンコードされます。

Power Apps キャンバスアプリのSortByColumns関数の2つ目の引数は、「見えている列名」(以降「外部列名」)ではなく、システム内部の列名(以降「内部列名」)を参照する必要があります。(図4)

Power Apps キャンバスアプリでは、SharePointの内部列名を参照する

Power Apps キャンバスアプリでは、SharePointの内部列名を参照する

一般的にPower Apps以外のプログラム(JavasScript, C#, Power Automate等)でSharePointの列を指定する場合は、原則内部列名を指定します。

一方で、Power Appsで提供されている多くの関数は、外部列名でも動作するように機能が提供されていますが、SortByColumnsなど、列操作に関する一部の関数に関しては、内部列名を指定する必要があります(ダブルクォーテーションで文字列として指定する必要がある関数は、すべて内部列名を指定します)。

自動でPower Apps キャンバスアプリを作成時した際、SortByColumnsの引数には、“Title”が設定されており、SharePoint上では“タイトル”として表示されています。

読めてしまう分、直感的にエラーの原因に気づきにくい=内部列名を意識しない

これが混乱を招きやすいポイントです。

 

このエラーは、日本語だけではなくハングルなどのマルチバイト文字を使用したときにも発生します。

これを回避するためには、次のような方法があります。

 

対策(SharePointはシングルバイトで作成する)

SharePointリストで項目を作成する際は、一度列名をシングルバイト(英数字)で作成し、内部列名を英語で登録した後、外部列名を日本語に変更するという方法で回避できます。

 シングルバイトで作成(内部列名を英語で登録)

 外部列名を日本語に変更

 

※内部列名は後から変更できないので、最初からシングルバイトで作成することが重要です。

 

ではSharePointリストの項目を実際に修正しましょう。

先ほど作成したSharePointリストの[発行日]列を一度削除し、[IssueDate]で登録した後、外部列名を[発行日]に変更しました。

また、Power Apps キャンバスアプリのSortByColumns関数では、第2引数に“発行日”(外部列名)ではなく、“IssueDate”(内部列名)を指定しました。

以下を見ていただくと、エラーは発生しませんでした。

SharePointリストの項目をマルチバイトにて作成した際のPower Apps キャンバスアプリ画面

SharePointリストの項目をシングルバイトで作成し、その値をPower Apps キャンバスアプリで指定。

 

Power Appsアプリ上でデータを入力し、日付順にソートされていることを確認します。

Power Apps キャンバスアプリ上でデータが日付順でソートされていることを確認

Power Apps キャンバスアプリ上で日付順にソートされている

 

まとめ

今回紹介したエラーの他にも、SharePointは日本語などのマルチバイト入力がネックになるケースがあります。

例えば、SharePointリスト等を新規作成する時、タイトルをシングルバイト(英数字)で記載すれば、その文字列をそのままURLとして反映させることができます。

一方で、日本語のみで記述すると[List1][List2]…のような表記になります。(これも後から変更できません!)

 

なお、SharePointを裏側で使用するMicrosoft Teamsも、チーム名を日本語で入力してしまうと、メールアドレスやサイトURLがエンコードされてしまいます。

 

こうした様々なケースを踏まえると、

プログラムでSharePointのリストを使うことが明らかである場合には、シングルバイト(英数字)で命名するのが望ましいです。

 

とはいえ、現在運用されているのSharePointリストの内部列名は変更できませんし、一般利用者がこの仕様を意識するケースはほとんどありませんので、日本企業の多くの組織では、Power Appsなどのアプリ作成がしづらい設計になっていることが多いです。

ですので、Power Appsアプリ作成の障壁を下げるよう、管理側から利用者に対して「Power AppsやPower AutomateでSharePointリストを使用する際の注意点」として、この点について案内することをお勧めします。

 

おまけ(Power Appsのラベルでは内部列名・外部列名はどちらとも指定可能)

Power Apps キャンバスアプリのラベルを使用する際、TextプロパティにSharePointリストの項目名を表示させる場合は、外部列名、内部列名どちらでも指定可能でした。(図7,8参照)。

Power Apps キャンバスアプリにて内部列名を指定

Textプロパティに内部列名を指定

Power Apps キャンバスアプリにて外部列名を指定

Textプロパティにに外部列名を指定

 

 

 

弊社ではPower Platform(Power AppsやPower Automateなど)を用いてお客様の業務を自動化するご支援を数多く承っております。

業務の中で、「普段手動でやっている業務を自動化できないか」というような疑問がある場合には、お気軽にアーティサン株式会社までお問い合わせください。

Azure SQL DatabaseやPower AppsとSharePointなどの開発担当:池内佑哉

池内佑哉

IT2年生です。趣味は紅茶です。

シェアする
記事カテゴリ
最新記事
 
2022.05.18

Power Automateのベストプラクティス・アンチパターン(4)【アクションの入れ子を回避】

 
2022.05.11

Power Automate:メール送信時にメッセージIDを取得する方法

 
2022.04.27

Power Apps の実践的なノウハウ まとめ

人気記事ランキング
1
2020.10.02

世界に広がる Power Apps「モデル駆動型アプリ」のココがスゴイ!【第1回】

2
2021.07.14

【Power AutomateでExcelデータをSharePointにインポートするために考えること 第2回】フロー作成でエラー発生!

3
2021.06.23

【Power AutomateでExcelデータをSharePointにインポートするために考えること 第1回】4つのシーンごとに手法を比較、その最適解とは?

4
2021.09.03

【Power AutomateでExcelデータをSharePointにインポートするために考えること 第8回】トリガーの条件の指定方法

5
2021.08.11

【Power AutomateでExcelデータをSharePointにインポートするために考えること 第5回】ExcelファイルIDを動的取得

   
PageTop
ページトップに戻る