ADVERTISEMENT

【Power Automate】Dataverse行の更新でつまずく時の入力値と条件分岐の直し方

【Power Automate】Dataverse行の更新でつまずく時の入力値と条件分岐の直し方
🛡️ 超解決

Power AutomateでDataverseの行を更新するアクションは、よく使われる一方で、入力値や条件分岐のミスによって意図した通りに動作しないことがあります。特に「行の更新」アクションでは、テーブル名や行IDの指定ミス、データ型の不一致、条件分岐の誤りが原因でエラーや無視が発生しがちです。この記事では、具体的な失敗パターンと修正方法をステップごとに解説し、問題を切り分ける手順を紹介します。

【要点】この記事で確認すること

  • 最初に見る場所: アクションの入力欄(テーブル名、行ID、更新する値のデータ型)と条件アクションの式
  • 切り分けの軸: 入力値の形式の問題か、条件分岐のロジックの問題か、それともDataverse側の権限や設定の問題か
  • 注意点: 会社PCで使用する場合、Dataverseの接続参照や権限設定を管理者に確認せずに変更しないこと。特にテーブル名の論理名と表示名の違いに注意

ADVERTISEMENT

1. Dataverse行の更新アクションの基本と入力値の確認ポイント

Dataverse行の更新アクションは、指定したテーブルの特定の行に対して、任意の列の値を更新します。まずはアクションの設定画面で確認すべき項目を見ていきます。

1-1. 必須項目「行のID」と「テーブル名」の指定ミス

アクションのプロパティには「テーブル名」と「行のID」が必須です。テーブル名はDataverse上の論理名(例:”accounts”)を指定する必要があります。表示名(例:”取引先企業”)を指定するとエラーになります。行のIDはGUID形式の文字列で、動的なコンテンツから取得する場合は、データ型が文字列であることを確認してください。数値や真偽値として扱われると、正しく結合されません。

1-2. 更新する列の値のデータ型と形式

「詳細設定」を展開すると、更新する列を追加できます。ここでは列の論理名と値をセットで指定します。値のデータ型が列の型と一致していないと、更新されないかエラーになります。例えば、数値列に文字列を渡すと失敗します。また、オプションセット(選択肢)の場合は、対応する整数値(ラベルの値)を指定する必要があります。日付列はISO 8601形式(例:”2025-03-20T10:30:00Z”)で指定します。

2. 条件分岐でつまずくパターンと修正方法

条件分岐を使って特定の行だけを更新したい場合、条件式の書き方によっては、すべての行が更新されたり、まったく更新されなかったりします。代表的なパターンを解説します。

2-1. 条件が常に偽になるケース

条件に使用する変数が空文字やnullになっていると、常に条件が偽になります。例えば、トリガーから取得した値をそのまま使わず、変換が必要な場合があります。具体的には、数値として比較したいのに文字列になっている、または日付のタイムゾーンがずれているなどです。条件アクションの前に「コンポーズ」アクションを追加して、実際の値を確認することで原因を特定できます。

2-2. 複数条件の組み合わせミス

複数の条件をANDやORで組み合わせる際、グループ化の括弧を忘れると意図しない動作になります。Power Automateの条件アクションでは、条件を追加するたびにデフォルトでAND結合になります。ORで組みたい場合は、グループを追加して「または」を選ぶ必要があります。例えば、「ステータスが’アクティブ’かつ(カテゴリが’A’または’B’)」のような条件は、適切にグループ化しないと誤った行が対象になります。

3. 実際のエラー例と原因の切り分け手順

具体的なエラーメッセージをもとに、問題を特定する手順を紹介します。以下のステップを順に実行してください。

  1. まず、実行履歴から失敗したアクションを開きます。エラーメッセージを確認してください。よくあるエラーは「Dataverseに接続できません」「行が見つかりません」「列の値が無効です」などです。
  2. エラーが「行が見つかりません」の場合、行IDが正しいか確認します。行IDはGUID形式(例:”00000000-0000-0000-0000-000000000000″)である必要があります。空の値や不正な形式が入っていないか、直前のアクションの出力を確認します。
  3. 「列の値が無効です」の場合は、更新しようとしている列のデータ型と値の型が一致しているか確認します。例えば、整数列に文字列の”123″は自動変換される場合がありますが、小数点を含む数値や真偽値は注意が必要です。また、オプションセットの値はラベル名ではなく整数値で指定します。
  4. 条件分岐がうまくいかない場合は、条件の結果を出力するダミーのアクション(メール送信など)を一時的に追加して、どの条件評価が通っているか確認します。これにより、条件式の誤りを特定できます。
  5. 最後に、Dataverseの接続参照が正しく設定されているか確認します。特に会社のポリシーで接続が制限されていないか、管理者に問い合わせてください。

4. 状況別比較表

以下の表は、よくある問題とその解決策をまとめたものです。

状況 考えられる原因 確認ポイント 修正方法
アクションがエラーにならないが値が更新されない 条件分岐が正しく動作していない、または更新する列の指定が漏れている アクションの出力を確認し、実際に変更が行われたかをDataverseで直接確認 条件を一時的に無効にしてテスト、または更新列をすべて再指定
「行が見つかりません」エラーが出る 行IDの値が空、またはGUID形式でない 前に取得した行IDのデータ型が文字列か確認 式を使って文字列に変換する(例:string(outputs(‘行の取得’)?[‘body/accountid’]))
「列の値が無効」エラーが出る データ型の不一致、またはオプションセットにラベル名を指定 列の型と値の型が一致しているか確認 値に数値関数や日付関数を使用して適切な型に変換
条件分岐が常に真になる 条件式に空の式が指定されている、または比較演算子が間違っている 条件アクションの式エディタで実際の式を確認 等しい(=)と等しくない(≠)の混同に注意し、式を修正

5. 失敗パターンと管理者への確認事項

実際によくある失敗パターンを列挙し、管理者に確認すべきポイントをまとめます。特に大企業では、Dataverseのセキュリティ設定や接続参照の権限が原因で更新に失敗することがあります。

失敗パターン1:テーブル名の指定ミス
テーブル名に表示名(日本語名)を指定してエラーになるケース。修正は論理名に変更します。

失敗パターン2:行IDに未定義の変数を指定
トリガーやアクションから正しく取得できていない変数を使い、空値が渡される。確認方法:アクションのテスト時に「行のID」に動的コンテンツを挿入した結果をチェックします。

失敗パターン3:条件分岐のデフォルト値
条件が偽の場合に何もしない設定で、期待通りに動かない。代替として、条件の「もしはい」と「いいえ」の両方を設定することを検討します。

管理者へ確認する情報

  • Dataverseへの接続参照が有効かどうか。特にPower Platform環境が正しくリンクされているか。
  • 使用しているユーザーアカウントに、対象テーブルの「書き込み」権限があるか。読み取りのみの場合、更新は失敗します。
  • テーブルに対してビジネスルールやプラグインが設定されていないか。これらが更新をブロックしている可能性があります。

6. よくある質問(FAQ)

Q1: 「行の更新」アクションで、一度に複数の行を更新できますか?
A: 一度に一つの行しか更新できません。複数行を更新するには、ループ(Apply to each)を使用して個別にアクションを呼び出す必要があります。

Q2: 更新した値がすぐに反映されません。なぜですか?
A: Dataverseのキャッシュやバックグラウンド処理の影響で、即時反映されない場合があります。数分待つか、ブラウザのキャッシュをクリアして再度確認してください。

Q3: 条件分岐で文字列の比較がうまくいきません。
A: 文字列の大文字小文字を区別するか確認してください。Power Automateの条件では、通常は大文字小文字を区別しませんが、特定の式では区別される場合があります。式ビルダーで「等しい」の代わりに「含む」など他の演算子も試してみてください。

Q4: 行のIDがGUIDで取得できません。数字だけの値が返ってきます。
A: その場合は、Dataverseの自動採番されたIDではなく、別のレコード番号を取得している可能性があります。正しいGUID列(例:accountid)を参照しているか確認してください。

7. まとめ

Dataverse行の更新アクションでつまずく原因の多くは、入力値のデータ型と条件分岐のロジックにあります。まずはアクションの設定で「テーブル名」と「行のID」が正しいか、そして更新する値の型が列定義と一致しているかを確認しましょう。条件分岐がうまくいかない場合は、ダミーのアクションで条件評価の結果を出力して検証するのが効果的です。会社のポリシーによっては、Dataverseの接続や権限が影響することもあるため、管理者に相談することをためらわないでください。これらのポイントを押さえれば、多くの問題を自力で解決できるようになります。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

ADVERTISEMENT