Power Appsで複数選択フィールドをデータテーブルに表示!Concat関数で簡単に実装する方法

はじめに

Microsoft Power Apps(以下、Power Apps)は、専門性の高い技術や開発の経験を持たなくてもビジネスニーズに対応するモバイルアプリや Webアプリを比較的簡単に作成できるローコード ツールです。

Microsoft Teams(以下、Teams)では、Power Appsアプリを使用して、該当するチームのメンバー全体又は権限を有するメンバーが利用できるアプリを作成することができます。

本サイトでは、Teams の Power Apps を利用してアプリを作成する上で役に立つちょっとしたテクニックを紹介しています。

本記事では、Concat関数を使用して複数選択フィールドをデータテーブルに表示する方法を紹介します。具体的には、Concat関数Left関数およびLen関数Substitute関数を組み合わせて実装する方法について詳しく解説します。

複数選択フィールドとは

複数選択フィールドは、ユーザーが複数の選択肢から複数の項目を選ぶことができるフィールドです。複数選択フィールドは、カテゴリの選択などに利用されます(SharePointリストでも同様)。

Dataverse for Teamsの複数選択フィールドの例

データテーブルに表示するためには、選択された項目を一つの文字列として結合する必要があります。ただし、モダンコントロールのテーブルでは、複数選択フィールドにネイティブ対応しています。ここでは、クラシックコントロールのデータテーブルに複数選択フィールドの内容を表示する方法について説明します。

モダンコントロールで複数選択フィールドを表示した様子
クラッシックコントロールで文字列の結合処理をしないまま複数選択フィールドを表示した様子

Concat関数の基本

Concat関数は、指定したテーブルの各行に対して、指定した列の値を結合して一つの文字列にする関数です。例えば、選択されたタグをスラッシュ区切りで一つの文字列にまとめることができます。

Concat(ThisItem.複数選択肢, Value & "/")

Concat関数の構文は次のとおりです。 

Concat (テーブル数式区切り記号)

  • テーブル – 必須。 操作の対象となるテーブル。
  • 数式 – 必須。 テーブルのレコードにまたがって適用する数式。
  • 区切り文字 – オプション。 テーブルの連結された行の間に挿入されるテキスト値です。

この関数を使用することで、複数の選択肢を簡単に一つの文字列にまとめることができます。

この関数をデータテーブルの該当フィールド(ここでは「おもな産地」)の Textプロパティに設定することで、連結した文字列を表示することができます。

ただし、Concat関数のみでは、末尾に余分な区切り文字がついてしまうので、次に説明する方法により除去する必要があります。

実装方法① – LeftおよびLen関数で末尾の文字を除去する

末尾の余分な区切り文字を除去するためには、Left関数Len関数を組み合わせる方法があります。

次の関数は、Concat関数で指定した区切り文字「/」を使って ThisItem.複数選択肢 内の値を連結し、最後に末尾の「/」だけを取り除くものです。以下で各パーツの詳細を説明します。

Left(Concat(ThisItem.複数選択肢, Value & "/"), Len(Concat(ThisItem.複数選択肢, Value & "/")) - 1)

Concat関数は、ThisItem.複数選択肢 の中にある各アイテム(複数の値)を取り出し、それを「/」で連結しています。例えば、ThisItem.複数選択肢 に「A」「B」「C」という値があった場合、Concat(ThisItem.複数選択肢, Value & "/") の結果は「A/B/C/」という文字列になります。

Left関数は、文字列の左端から指定した数の文字を取得する関数です。例えば、Left("Hello, World", 5)"Hello"を返します。この関数を使用することで、余分な文字を簡単に除去できます。

Len関数は、文字列の長さを返す関数です。例えば、Len("Hello")5を返します。Concat関数で結合された文字列の長さを取得し、末尾の余分な文字を除去するために使用します。

実装方法② – Substitute関数で末尾の文字を空白に置換する

もう一つの方法として、Substitute関数を使用して末尾の区切り文字を空文字に置換する方法があります。

この方法では、Concat関数で連結した文字列の最後のスラッシュを空文字に置換することで、余分な区切り文字を除去します。

Substitute(Concat(ThisItem.複数選択肢, Value & "/"), "/$", "")

Substitute関数は、文字列内の特定の部分を別の文字列に置換する関数です。例えば、Substitute("Hello, World", "World", "Everyone")"Hello, Everyone"を返します。この関数を使用することで、特定の文字列を簡単に置換することができます。

この例では、Substitute関数を使って、末尾の「/」を探し、それを空文字列("")に置換しています。

ここで重要なのは、"/$" の部分です。これは「正規表現」と呼ばれるパターンマッチングを表します。

  • 「/」: 文字列内のスラッシュ(/)を意味します。つまり、検索する対象は「/」です。
  • 「$」: これは「末尾」を示す特殊な記号です。文字列の最後に来るパターンに一致させるために使います。

したがって、"/$" という正規表現は「文字列の末尾にあるスラッシュ」を指します。

この書き方では、前述の関数のように Len関数Left関数を使って文字列の長さを計算しなくても、Substitute関数と正規表現を組み合わせることで、末尾のスラッシュを簡潔に除去することができます。

まとめ

本記事では、Power Appsで複数選択フィールドをデータテーブルに表示する方法について、Concat関数を使用した実装方法を紹介しました。具体的には、ユーザーが複数の選択肢から複数の項目を選ぶことができる複数選択フィールドをデータテーブルコントロールに表示するための方法を、Left関数やLen関数を組み合わせる方法と、Substitute関数を使用する方法で解説しています。これらの方法を活用することで、データテーブルの見た目を整え、より見やすくすることができます。