Power Apps関数関数解説

【Power Apps】Errors関数とは、使い方

Power Apps

Errors関数とは

データ ソース への前の変更のエラー情報を提供します。

公式より引用

データソースを入力することで、そのデータソースで発生しているエラーの情報が一覧表示されるテーブルを出力します。このテーブル情報で、エラーの原因を特定することが可能です。

また第二引数にレコードを入力することで、最後に保存したレコードに絞ることなどもできます。

構文

Errors( DataSource [, Record ] )

DataSource – 必須。 エラーを返すデータ ソース。
Record – オプション。 エラーを返す特定のレコード。 この引数を指定しない場合、関数はデータ 
ソース全体のエラーを返します。

使い方

エラーの特定方法

データソース操作関数の結果エラーが出た場合に、エラーの原因を特定するために使用します。

まずはエラーを起こすために、空のレコードをリストに追加します。

Title列が必須なので、エラーが発生しました。このエラーメッセージならわかりやすいですが、Errors関数ならより詳細に情報を確認できます。

関数の結果はテーブルとして出力されるので、一時的な物であればボタンを追加しOnSelectプロパティにSet(b, Errors(テーブル名))と入力し、値を変数aに格納します。

この変数bをプレビューすると値を確認しやすいです。

以下変数名はSet関数で宣言したものに読み替えてください。変数名は正しく命名しましょう。

テーブル形式なので、値を表示するためにはFirst関数などで行と列を指定します。

次は、書き込みができないID列を更新してみます。

以下のようにエラーが表示されますが、どの列がエラーの原因なのかは表示されません。

Errors関数で確認すると、ID列が原因ということがわかりました。

Error列の値

ErrorKindというEnum値で取得できる数値に対応しています。

ErrorKind内容
ErrorKind.Conflict同じレコードに対して別の変更が行われ、変更の競合という結果になりました。 Refresh 関数を使用して、レコードを再読み込みし、変更を再度試します。
ErrorKind.ConstraintViolated1 つ以上の制約に違反しています。
ErrorKind.CreatePermissionレコードを作成しようとしましたが、現在のユーザーにはレコードを作成するためのアクセス許可がありません。
ErrorKind.DeletePermissionsレコードを削除しようとしましたが、現在のユーザーにはレコードを削除するためのアクセス許可がありません。
ErrorKind.EditPermissionsレコードを編集しようとしましたが、現在のユーザーにはレコードを編集するためのアクセス許可がありません。
ErrorKind.GeneratedValueデータ ソースが自動的に生成する列を変更しようとしました。
ErrorKind.MissingRequired必要な列の値がレコードにありません。
ErrorKind.Noneエラーはありません。
ErrorKind.NotFoundレコードを編集または削除しようとしましたが、レコードが見つかりませんでした。 別のユーザーがレコードを変更した可能性があります。
ErrorKind.ReadOnlyValue読み取り専用の列を変更しようとしました。
ErrorKind.Syncデータ ソースによってエラーが報告されました。 詳細については、メッセージの列を確認してください。
ErrorKind.Unknownエラーが発生しましたが、種類が不明です。
ErrorKind.Validation他の種類の 1 つに適合しない、一般的な検証のイシューが検知されました。
公式から引用(ErrorKind列の値は修正)

ラベルのTextプロパティに入力することで内容列の値を表示できるコードを置いておきます。

First(a).ErrorをError列の値と置き換えてください。

LookUp(
    Table(
        {
            ErrorKindValue: ErrorKind.Conflict,
            内容: "同じレコードに対して別の変更が行われ、変更の競合という結果になりました。 Refresh 関数を使用して、レコードを再読み込みし、変更を再度試します。"
        },
        {
            ErrorKindValue: ErrorKind.ConstraintViolated,
            内容: "1 つ以上の制約に違反しています。"
        },
        {
            ErrorKindValue: ErrorKind.CreatePermission,
            内容: "レコードを作成しようとしましたが、現在のユーザーにはレコードを作成するためのアクセス許可がありません。"
        },
        {
            ErrorKindValue: ErrorKind.DeletePermissions,
            内容: "レコードを削除しようとしましたが、現在のユーザーにはレコードを削除するためのアクセス許可がありません。"
        },
        {
            ErrorKindValue: ErrorKind.EditPermissions,
            内容: "レコードを編集しようとしましたが、現在のユーザーにはレコードを編集するためのアクセス許可がありません。"
        },
        {
            ErrorKindValue: ErrorKind.GeneratedValue,
            内容: "データ ソースが自動的に生成する列を変更しようとしました。"
        },
        {
            ErrorKindValue: ErrorKind.MissingRequired,
            内容: "必要な列の値がレコードにありません。"
        },
        {
            ErrorKindValue: ErrorKind.None,
            内容: "エラーはありません。"
        },
        {
            ErrorKindValue: ErrorKind.NotFound,
            内容: "レコードを編集または削除しようとしましたが、レコードが見つかりませんでした。 別のユーザーがレコードを変更した可能性があります。"
        },
        {
            ErrorKindValue: ErrorKind.ReadOnlyValue,
            内容: "読み取り専用の列を変更しようとしました。"
        },
        {
            ErrorKindValue: ErrorKind.Sync,
            内容: "データ ソースによってエラーが報告されました。 詳細については、メッセージの列を確認してください。"
        },
        {
            ErrorKindValue: ErrorKind.Unknown,
            内容: "エラーが発生しましたが、種類が不明です。"
        },
        {
            ErrorKindValue: ErrorKind.Validation,
            内容: "他の種類の 1 つに適合しない、一般的な検証のイシューが検知されました。"
        }
    ),
    ErrorKindValue = First(a).Error,
    内容
) 

活用方法

デバッグ・エラーハンドリング

以下のようにエラーメッセージでエラーの原因が特定できないような場合に使用します。

またエラーメッセージの値を取得することもできるので、エラーメッセージによってエラーハンドリングを行うことも可能です。

データのコピー

【Power Apps】データをコピーする方法2選+複数回コピーの方法
SharePointやDataverseでデータをコピーする方法を2つ紹介します。また、ForAll関数で複数回コピーしつつ特定の列のみ異なる値を追加する方法についても紹介します。Form.Updat...

コメント

タイトルとURLをコピーしました