Power Appsのデータ型・型の変換について

この記事では、Power Appsのデータ型の種類、使い方や例と型の変換方法を紹介します。

## データ型とは

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618051/edb7bcdf-c19f-cf87-acc7-e8cfa2bf52d0.png)

データ型とは、Power Appsで使用する文字列、数値、日付やブール値を**Power Apps側に判断させるための型**のことです。この型が異なるものを関数の入力として使用するとうまく動いてくれないことがあります。

テキスト型はラベルやボタンなどのTextプロパティなど、画像型は画像コントロールのImageプロパティという風に**どのプロパティにどのデータ型を入力すべきか**はあらかじめ決められています。

## データ型の種類と主な用途

### ブール(**Boolean**)値

true/falseの値です。フラグとしても利用できます。

主な使用用途としては、以下の画像のようにIfなどの**関数の論理式**で使用することです。

変数は、[Set関数](https://powerplatformnikki.com/set/)などで指定することが可能です。以下の画像のボタンにはそれぞれSet(A,true),Set(A,false)が割り当てられていて、それぞれのボタンを押すことでAという変数のtrue/falseを切り替えられます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3618051/6e00c724-ed51-43a7-273e-aef7c852e2a3.png)

### テキスト型

**""で囲まれた文字はすべてテキストとして判別**されます。入力された変数などで”Text型を入力してください”などのエラーが出た際には**Text関数**を利用することでテキスト型に変換できます。

### 数値(Number)型

数値のみを入力した場合はNumber型として判別されます。**小数点がついているものもNumber型**となります。テキスト型と同じくエラーが出た際には、**Value関数**を利用すると数値型に変換できます。

### 日付(Date)型

日付を入力すると日付型として判別されます。ただし、そのまま入力してもテキストとして判別されてしまうため、**Date関数などを使用**します。

https://powerplatformnikki.com/datetype

https://powerplatformnikki.com/dateconvert

### 時間(Time)型

時刻を指定したときの型です。日付型と同じように変換のために**Time関数を使用**します。

https://powerplatformnikki.com/timetype

### 日付時間(DateTime)型

日付型と時間型を合わせたものです。**DateTime関数やNow関数**を使用します。

https://powerplatformnikki.com/datetime

### レコード(Record)型

{列名1: 値1,列名2: 値2}のように書くことでレコード型のデータを作成することができます。

**レコードが必要です**というエラーになっている場合は、データソースがテーブル型になっている場合が多いです。**First関数, Last関数, Index関数またはLookUp関数**でレコード(1つの行に絞り込む)にすることができます。

https://powerplatformnikki.com/lookup

https://powerplatformnikki.com/firstlast

https://powerplatformnikki.com/index

また、**テキスト型が必要です**というエラーになっている場合はレコード型のためどの列を参照すればよいかがわからない状態になっている可能性があります。

末尾に**.列名か.Value**を入力すると解決します。

**Dropdown.Selected、Gallery.Selected、ThisRecord**がレコード型に相当します。

### テーブル(Table)型

Table関数を使用して

```
Table({列名1: 値1,列名2:値2},{列名1:値3,列名2:値4})
```

という形でテーブルを新しく作成するか、レコード型をまとめます。

**ClearCollect関数で作成したコレクションや**、**SharePointリストなどのデータソース**がテーブル型に相当します。

Table型で作成したテーブルは、Collect関数などでコレクションに入れることができます。

https://powerplatformnikki.com/Collect/

https://powerplatformnikki.com/powerappscollection

### 色(Color)型

色の情報を持つ型です。**ColorValue( "カラーコード" )**、**RGBA( 赤,緑,青,アルファ成分)**などのようにして色を指定することができます。

**コントロールの色を変更したい場合**(Colorプロパティ、Fillプロパティなど)にはこれらの関数を使用します。

## まとめ

| 変換前の型 | 変更後の型 | 数式 | 備考 |
| --- | --- | --- | --- |
| テキスト | 数値 | Text(数値型値) | エラーメッセージが”Text型が必要です。”の場合に使用する。 |
| 数値 | テキスト | Value(テキスト型値) | エラーメッセージが”Number型が必要です。”の場合に使用する。 |
| テキスト | 日時 | DateTime(テキスト型値) | エラーメッセージが”DateTime型が必要です。”の場合に使用する。 |
| テキスト | レコード | {列名:テキスト型値} | 列名は任意で設定可だが、何らかのデータ操作関数で使用する場合はデータソース側と同じにする必要あり。 |
| レコード | テーブル | Table(レコード型値, レコード型値) | レコード型の値をカンマ区切りで結合可能。※列名は同一の場合に限る |
| テーブル | レコード | First(テーブル型値) | 最初の行を取得する場合はFirst, 最後の行を取得する場合はLast, n番目の行を取得する場合はIndex関数を使用する。 |
| レコード | テキスト、数値など | レコード型.列名 | データ型はテーブル側の定義による。数式上でハイライトすれば、その部分のデータ型と値を確認できます。 |

数式上でハイライトすれば、その部分のデータ型と値を確認できます。

初心者のうちはデータ型の違いがよくわからないと思いますが、**使っていくうちに理解できるようになります。**

データ型が一致しないことでエラーが出ることがよくありますので、**変換する関数**をメモして

おくといいかもしれません。

https://powerplatformnikki.com/powerappsstructureddata

## 元記事

https://powerplatformnikki.com/data-type/