はじめに
PowerAppsを使ってアプリを開発していると、「空」を確認するための関数としてIsBlank、Blank()、IsEmptyが登場します。意外とこれらの使い分けを把握できていないと、If文での条件分岐などの処理でつまづいてしまうことがあります。それぞれの違いを正確に理解して使いこなすことが、開発効率向上の鍵となります。本記事では、それぞれの動作や用途、使用例を詳しく解説します。ぜひ、今回でマスターしましょう!
そもそもBlank、空の文字列(Empty String)とは
初めにBlankについて公式ドキュメント(英語の記事を日本語訳)には、「Blank は「値なし」または「不明な値」のプレースホルダーです。例えば、コンボボックスコントロールの Selected プロパティは、ユーザーが選択を行っていない場合は Blank になります。多くのデータソースは NULL 値を格納および返すことができ、これらは Power Apps では Blank として表現されます。
」とあります。つまり、値が定まっていない初期状態の場合は空白となっている。そして、例えばブール値(True, False)を扱う場合その2値だけでなく、”Blank”を設定することもできます。
次に、空の文字列は「文字が含まれていない文字列」です。つまり、型名はStringです。数式には””として、書き込むことができます。
各関数の概要
Blank()とは
Blank()は空の値そのものを作成するための関数です。具体的には、データソースに対してNULLを代入します。多くの場合、初期化や特定の値をリセットする際に使用されます。
使用例
Set(MyVariable, Blank())
このコードは、変数MyVariableを空に設定します。
注意点
Blank()が代入された値は、IsBlankで確認可能ですが、IsEmptyではチェックできません。
IsBlank()とは
IsBlankはblank値か空の文字列を判定する関数です。Blank値を特定してテストしたい場合は、IsBlankの代わりにIf(Value = Blank(), …)を使用した方が良い。ここで注意すべきは、IsBlank関数は空のテーブルをBlankと見なさない点です。
使用例
IsBlank(TextInput1.Text)
この例では、TextInput1が空の場合にtrueを返します。
注意
ここで以下の場合を確認しておきます。
条件としては、テキストボックスに対してテキストのヒントとして”テキスト”
が設定されています。(プレースホルダーをクリックすると消える文字)
- 初めは”= Blank()”も、”IsBlank()”もどちらもtrueを返しています。
- 次に、プレースホルダーにテキストを入力するとどちらもfalseになります。ここまでは理解しやすいと思います。
- 最後にプレースホルダーの文字を消します。すると、”= Blank()”の方はfalseのままで、”IsBlank()”の方はtrueに戻ります。
つまり、ここから分かるのは、初めはBlankになっていたがプレースホルダーから文字を消した後はその中身は”空の文字列”となっている。そして、空の文字列を扱えるのはIsBlank()のみであるため、IsBlank()の結果のみtrueを返しているということです。よって、プレースホルダー内の空白のチェックにはIsBlank()の使用が良いことがわかります。
IsEmpty()とは
IsEmptyは、コレクションやテーブルが空であるかを判定するための関数です。IsBlankとは用途が異なり、リストやデータソースに対して使用します。ここで、IsEmptyを値に対して使用しても常にfalseが返ってきてしまう点に注意です。
使用例
IsEmpty(MyCollection)
MyCollectionにアイテムが1つもない場合にtrueを返します。
実際の動作
以下のような違いがあります。
• 空の文字列(””)やBlank()は対象外
• コレクションのアイテム数が0の場合のみtrue
使用する際のポイント
• 単一値を判定する場合: IsBlankを使用
• データソースやリストの判定: IsEmptyを使用
• 値をリセットまたは初期化する: Blank()を使用
注意点
• 未初期化のテキストボックスはIsBlankでtrueを返しますが、空のコレクションに対してはIsEmptyを使用する必要があります。
• 関数を使い分けることで、アプリのロジックが明確になり、エラーを防ぐことができます。
まとめ
一通り理解できたでしょうか?これらの違いを理解して、今後の開発に役立ててください。
ファンリピートは、Power Apps、Dataverseの導入・活用を支援するサービスを提供しています。Power Apps開発でお困りの方は、ぜひお気軽にご相談ください。