ADVERTISEMENT

【Power Automate】Excelテーブルのロックで困った時の入力値と条件分岐の直し方

【Power Automate】Excelテーブルのロックで困った時の入力値と条件分岐の直し方
🛡️ 超解決

Power AutomateでExcelテーブルを操作する際、「テーブルがロックされています」というエラーに遭遇したことはありませんか。このエラーは、複数のフローが同時に同じテーブルを更新しようとしたり、テーブルの構造を変更する操作が原因で発生します。特に、入力値や条件分岐の設定が適切でないと、ロックが頻発しやすくなります。本記事では、Excelテーブルのロックエラーの原因を特定し、入力値と条件分岐を正しく修正する方法を、実務に即して解説します。

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

  • 最初に見る場所: フローの実行履歴からエラーメッセージの詳細を確認し、どのアクションでロックが発生したか特定します。
  • 切り分けの軸: 端末側(Excelファイルの共有設定)、アカウント側(使用しているライセンスやアクセス権限)、管理設定側(テナントの制限やコネクタの制限)の3つで原因を分類します。
  • 注意点: ロックを回避するために「並列処理を許可」をむやみに変更すると、データ整合性が損なわれる可能性があります。変更前にチームや管理者と相談してください。

ADVERTISEMENT

なぜExcelテーブルはロックされるのか?原因の特定方法

Power AutomateがExcelテーブルにアクセスする際、内部的にファイルを開いて書き込みを行います。このとき、他のユーザーや別のフローが同時に同じテーブルを操作しようとすると、Excelの共有ロック(File In Use)が発生します。また、テーブルの構造(列の追加・削除など)を変更するアクションは、テーブル全体をロックする傾向があります。原因を特定するには、まずフローの実行履歴でエラーメッセージを確認しましょう。メッセージに「Table locked」や「Resource conflict」が含まれていれば、ロックが原因です。

ロックの主な発生パターン

  • 複数のフローが同時に同じテーブルに書き込む: 例えば、承認フローとレポート生成フローが同時に起動すると衝突します。
  • テーブルの構造変更を伴うアクション: 「テーブルに行を追加」は構造を変えないため比較的安全ですが、「テーブルの列を追加」は構造変更のためロックがかかりやすいです。
  • Excelファイルが他のユーザーによって手動で開かれている: フローがアクセスしようとした時点で、誰かが編集しているとロックされます。
  • 条件分岐で異なるテーブルに書き込むが、同じファイル内: 同一ファイル内の別テーブルでも、ファイル全体がロックされる場合があります。
お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

入力値の直し方:トリガーとアクションの設定見直し

ロックエラーを減らすには、フローがテーブルに送り込む入力値のタイミングと内容を最適化する必要があります。具体的には、以下の手順でトリガーとアクションの設定を見直してください。

  1. トリガーの並列実行を制限する: フロー設定で「同時実行の最大数を1」に変更します。これにより、複数のインスタンスが同時に動作するのを防ぎます。
  2. 「変更があったときのみ実行」を有効にする: 特に「ファイルが変更されたとき」トリガーでは、必要最小限の変更でフローが起動するようにフィルターをかけます。
  3. アクションの「再試行ポリシー」を設定する: ロックエラーが発生した場合に自動的にリトライするように設定します。基本間隔は1秒、最大試行回数は3回程度が目安です。
  4. 「Excel Online (Business)」コネクタの「テーブルに行を追加」アクションを使用する: このアクションは構造変更を伴わないため、ロックが発生しにくいです。「テーブルを更新」アクションは構造変更を伴う可能性があるので、避けたほうが安全です。
  5. 入力値のサイズを小さくする: 一度に大量の行を追加しようとすると、ロック時間が長くなります。バッチ処理にして1回あたりの行数を50行以下に抑えましょう。

これらの手順を実施することで、入力値に関連するロックエラーの発生頻度を大幅に減らせます。特に、再試行ポリシーは一時的なロックに対して有効です。

条件分岐の直し方:動的な値と静的テーブル参照のバランス

条件分岐でテーブルを参照する際、どのような条件を使うかでもロックの発生が変わります。動的な値(フロー内の変数)と静的なテーブル参照(直接テーブルを指定)のバランスが重要です。以下の表で、条件分岐の種類とロックリスクを比較します。

条件分岐の種類 ロックリスク 推奨設定
フロー内の変数を条件にする 低い 変数を事前に計算して条件分岐に使う
テーブルを直接参照して条件分岐 高い(テーブルに読み取りロックがかかる) 可能なら変数に置き換える
「フィルタークエリ」で条件指定 中程度(読み取りのみ) フィルタークエリを最適化し、必要な列だけ取得する
「列の値を取得」アクション 低い(特定のセルのみ読み取り) 単一セルの参照に限定する

条件分岐を直す具体的な方法としては、まずはテーブルへの読み取りアクセスを最小限にします。例えば、フロー開始時にテーブルから一度だけデータを変数に格納し、後続の条件分岐ではその変数を使うように変更します。

実践的な条件分岐の修正手順

  1. 「テーブルの行を一覧表示」アクションをフローの最初に追加し、必要なデータを変数に格納します。
  2. 条件アクションで、テーブルを直接参照せずに変数を参照するように式を書き換えます。
  3. テーブルへの書き込みアクションは、条件分岐の後で1回だけ実行するように順序を変更します。
  4. どうしてもテーブル参照が必要な条件は、フィルタークエリを使って必要な行だけを取得します。

よくある失敗パターンとその回避策

実際の現場でよく見られる失敗パターンを2つ紹介します。これらのパターンに該当する場合は、すぐに修正してください。

失敗パターン1: 条件分岐の中でテーブルに行を追加している

例えば、承認ステータスに応じて異なるシートに行を追加するフローで、条件分岐の各ブランチ内で「テーブルに行を追加」を配置しているケースです。この場合、複数のブランチが同時に実行される可能性があり、ロックが発生します。回避策としては、条件分岐の後に「スイッチ」アクションや「並列ブランチ」ではなく、順次処理になるように設計します。どうしても並列が必要なら、各ブランチで異なるファイルに書き込むようにしてください。

失敗パターン2: ループ内で同じテーブルに書き込む

「Apply to each」ループの中でテーブルに行を追加するフローは、ループの反復ごとにテーブルをロックします。特にループ回数が多い場合、ロックが長時間続きエラーになります。回避策としては、ループ内でデータを配列に蓄積し、ループ終了後にまとめて「テーブルに行を追加」を実行する(バッチ書き込み)方法が有効です。

管理者に確認すべき設定

個人で修正できない場合は、テナント管理者やPower Platform管理者に以下の設定を確認してもらってください。

  • 共有ファイルのバージョン管理: SharePointやOneDriveのファイルで「以前のバージョンを保持」が有効だと、ロックが発生しやすくなります。必要に応じて設定を変更してもらいましょう。
  • Power Automateの「同時実行制限」: 環境レベルでフローの同時実行数を制限するポリシーがあるか確認します。特にプレミアムライセンスが割り当てられている場合、制限が緩くなっていることがあります。
  • Excel Onlineのコネクタ制限: テナント全体でExcel OnlineコネクタのAPI呼び出し制限(リクエスト数/分)が設定されている場合があります。大量の書き込みを行うフローは制限に引っかかる可能性があるため、データを分散するなどの対策が必要です。

よくある質問(FAQ)

Q. ロックエラーが発生した場合、フローは自動的に再試行してくれますか?

A. デフォルトでは再試行されません。アクションの設定で「再試行ポリシー」を有効にする必要があります。また、同じアクションで連続して失敗すると、ポリシーが無視されることがあるため、エラーハンドリング(「スコープ」と「設定で構成されたハンドラー」)を併用することを推奨します。

Q. テーブルを直接操作せずに、Excelファイルを更新する方法はありますか?

A. 代替手段として、ExcelファイルをCSVやJSON形式で扱う方法があります。Power Automateでは「ファイル コンテンツの取得」アクションでファイルを読み込み、必要に応じて変換してから書き戻すことで、テーブルロックを回避できます。ただし、テーブルの書式や数式が失われるため、用途を限定してください。

Q. 複数のユーザーが同時にExcelファイルを開いていても、フローが問題なく動くようにすることはできますか?

A.


📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。

ADVERTISEMENT

この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】

ADVERTISEMENT