タグ別アーカイブ: エラーハンドリング

独自の入力チェックを導入して、アプリ運営を効率化する方法

【入力チェックを効果的に行うことでアプリ運用を適切に行えるようにしましょう!】

アプリを実際に運用しだすと「こんな風に入力しないで・・・」という問題が必ずおきます。この問題はできるだけアプリ内で事前に防げるようにしましょう

ポイント

実はデータカード内にはエラーメッセージ表示用の仕組みがあります

例えば、入力必須の項目が未入力の場合には上記の画像の箇所/ErrorMessage・・・から表示されます

表示は「Parent.Error」で行われます

この記事ではこのParent.Errorをうまく使いこなせるようにします

Parent.Errorはあくまでエラーが発生した時にだけ表示されます

エラーが発生した時の「Parent.Errorのメッセージ」を活かしつつ、エラーが発生する前にもメッセージを表示するためにCoalesce関数という関数を使用します

この関数は空白でない文字列の最初のものを表示します

つまり、エラーが発生していない時は「Parent.Errorでないもの」を表示します

エラーが発生した時には「Parent.Error」を表示します

ちなみに「parent.Error」は上の画像のようにText欄に設定されます

入力必須の設定

入力チェックの一番の基本は「入力必須」です

こちらは下の画像の「詳細設定」で行います

詳細設定の「Required」をtrueにするとチェックが設定されます

「Required」をtrueにした箇所を空欄にしたままSubmit関数を実行するとエラーメッセージがでます

入力範囲のチェック

入力項目の中には「いくら以上で」とか「いくら未満で」といった風に、範囲を制限するケースがあります

このケースではCoalese関数とIF関数を組み合わせます

下は500以上の入力を必須にするケースです

Coalesce(Parent.Error,If((Value(DataCardValue2.Text)<500) && !IsBlank(DataCardValue2.Text),”500以上で入力してください”))

上の数式ではCoalese関数を使用することにより、エラーが実際には発生していない時にはIf関数の中身を表示します

IF関数内では条件を2つ、AND条件で設定しています

①(Value(DataCardValue2.Text)<500) && ②!IsBlank(DataCardValue2.Text)

①は値が500未満という数字の制限です

②は!(否定)を付けることで値がブランクでない場合という制限です

形式のチェック

数字形式の入力が必須の箇所で、文字列が入力されるとエラーが表示されるようにします

今回もCoalese関数とIf関数を組み合わせます

但し、IsMatch関数という関数も組み合わせて使用します

IsMatch関数では事前定義済みパターンというものを設定します

IsMatch関数内でパターンに一致しない場合にはメッセージを表示できるようにします

Coalesce(Parent.Error,If(!IsMatch(DataCardValue5.Text,Match.MultipleDigits) && !IsBlank(DataCardValue5.Text),”数字のみで入力してください”))

ちなみに上記のIF式内では「!(否定)」を使用して!IsMatch(~、つまり~が一致しない場合としています

今回はMultipleDigitsという事前定義済みパターンを使用しています

こちらのパターンは「1 桁以上の数と一致します」というパターンです

MultipleDigits以外にも様々なパターンがありますのでぜひこちらを確認してみてください⇒詳細

<まとめ>

今回はPower Appsで入力チェックを行う方法を解説しました

Parent.Errorと空欄を無視するCoalese関数をうまく活用するのがポイントです

作成したPower Appsを使用してもらっても、入力されたデータが不完全だとあまり意味がありません

今回の入力チェックの仕組みはぜひうまく使いこなしましょう!

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power automate desktopでエラーをうまく扱う方法

【RPAにエラーは付き物です。エラーをうまく扱えばRPAの扱いそのものを向上させることができます】

今回の記事では、エラーが発生した時の対象方法について複数解説します

エラー対策のツボである「原因を突き止めやすくしておく」、「エラーが発生した場合の影響を軽微にとどめる」工夫に活かしていただきたいと思います!

リトライを行う

Power automate desktopの各アクションでは下の画像のように、エラーが発生した時の対処が指定できるようになっています

上の画像の箇所をクリックすると下の画像の画面が開きます

デフォルトでは「エラーが発生した場合にアクションを再試行する(リトライ)」はオフになっています

リトライをオンに設定することで、エラー発生後も指定回数・間隔にて該当アクションを再実行できます

別ルートの実行

ラベルアクションを使用することで、エラー発生時の処理の流れを事前に指定した内容に変えることができます

まずはラベルをフローの適切な場所に設定しましょう

今回はラベルを「エラー発生」のメッセージを表示するアクションの前に置きます

こうすることで「Excelの起動アクション」がエラーになった場合、こちらのラベル:myErrorにフローが飛び、メッセージを表示できるようします

ラベルを設定したので、今度は「Excelの起動アクション」のエラー発生時の設定を変えます

「フロー実行を続行する」を選択したうえで、「ラベルに移動」を選択します

上の画像の「ラベルの選択」は先ほど設定したラベルを選択します

これでフローを実行してみます

本来は「エクセルの起動」アクションの箇所でエラーメッセージが出て止まります

今回はラベルを事前に仕込んであるので、フローの流れが変わり、ラベルから下が実行されるようになっています

エラーメッセージ表示

エラーメッセージそのものをフローの流れの中で表示したいときには「最後のエラーを取得」アクションを使用します

「最後のエラーを取得」アクションにてエラー内容を変数に格納することができます

こちらの変数(上記画像ではLastError)をメッセージボックスに格納すればOKです

これで前述のラベルと組み合わせればエラーメッセージがエラー発生時に表示できるようになります

まとめてエラー対策

今までの解説で「いちいちフローごとにエラー対策はできない・・・」と感じた方もいらっしゃると思います

その場合には「ブロックエラー発生時」アクションを使用します

このアクションで下の画像のように「End」の箇所までをまとめてエラー対策を行えます

まとめてエラー対策を行う方法としては「サブフロー」を実行する方法がおすすめです

まず事前にサブフローを作成しておきます

次に「ブロックエラー発生時」アクションの編集をクリックします

次に開いた画面では、以下の箇所をクリックします

ここで「サブフローの実行」を指定できるようになります

こちらで事前に作成したサブフローを指定してください

これでEndで囲んだブロック内でエラーが発生した場合は一括で同じ処理が適用されます

ログファイル作成

エラー対策を実行するのに有効な手段として、エラー発生履歴を管理しておくというのもあります

先ほどのブロックでのエラー対策にてサブフローを実行しました

こちらのサブフローに、上記の画像のような発生時間をファイル名にした「ログファイル」を出力するフローを作成します

ログファイルに入れる内容としては「エラー内容」「発生日時」になります

ですので「最後のエラーを取得」「現在の日時を取得」アクションで「エラー内容」と「現在時刻」を取得します

取得した現在時刻は「datetimeをテキストに変換」アクションでファイル名に盛り込める形に変換しておきます

取得した「エラー内容」、変換した「現在時刻」はリストに格納しておきます

次に空のCSVファイルを作成します

「Excelの起動アクション」で新規にファイルを作成し、変換した「現在時刻」を盛り込んだファイルパスにてCSVファイル形式で保存します

最後に「CSVファイルに書き込む」アクションで先ほど作成したリストを空のCSVファイルに書き込みます

これでエラー発生都度、ログファイルを作成するフローが完成です

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ