Power Automate Desktop のWebフローが止まる・違う値を取る|原因は「上から何番目」で覚えるセレクターでした

python

Power Automate(Power Automate Desktop・無料版)で、Web ページから値を取り出すフローを作った。昨日まで動いていたのに、今日は止まっている。あるいは、止まってはいないのに、入っている値がおかしい——。

原因の多くは、PAD が「取りたい場所」を覚えるときの覚え方にあります。この記事では、手元に小さな試験ページを作り、同じフローのまま、ページだけを3通りに変えて実際に動かしました。止まる形、止まらずに違う値を取る形、そして直し方まで、出た画面と値のとおりに書きます。

先に結論

原因:PAD は取りたい場所を、名前ではなく「上から何番目の箱か」で覚えています。ページに箱が1つ増えると、番号がずれます。

いちばん困ること:止まるとは限りません。エラーを出さずに、別の場所の値を取ってくることがあります(手元では、りんごの値段のつもりが、新しく増えた商品の値段を取りました)。

直し方:「上から何番目」ではなく「『りんご』と書いてある箱の値段」のように、名前で探す指定に書き換えます。画面にそのためのボタンは無いので、アクションを文字でコピーして書き換え、貼り戻します。

PAD は、取りたい場所を「上から何番目」で覚えている

試しに使ったのは、こんな八百屋の値段のページです(自分で作った試験用のページで、自分のパソコンの中だけで開いています)。

試験用のページ。やおや まんぷく 今日の値段。りんご120円、みかん80円、ぶどう300円の3つの箱が並んでいる
試験用のページ「いつもの形」。この中の、りんごの「120円」を取り出します。

フローは3行だけです。

行アクション中身
1新しい Microsoft Edge を起動試験ページを開く
2Web ページからデータを抽出するりんごの「120円」を取り出す
3テキストをファイルに書き込む取り出した値をファイルに書く

2行目は、ふつうの作り方のとおり、Edge の上に出るライブ Web ヘルパーで「120円」を右クリックし、「要素の値を抽出」→「テキスト」と選んで作りました。動かすと、ファイルには 120円 と書かれます。

PAD が覚えた「場所」を見る

PAD がどこを覚えたのかは、画面のどこにも出ていません。見るには、2行目のアクションを1回クリックして Ctrl+C を押し、メモ帳に貼ります。アクションが文字になって出てきます。

WebAutomation.ExtractData.ExtractSingleValue BrowserInstance: Browser ExtractionParameters: {[$'''html > body > div > main > div:eq(0) > p''', $'''Own Text''', $''''''] } TimeoutInSeconds: 60 ExtractedData=> DataFromWebPage

この中の html > body > div > main > div:eq(0) > p が、PAD の覚えた場所(セレクター)です。左から順に、外側の箱から内側の箱へたどっています。

書いてあること意味
html > body > divページの中の、body のすぐ下にある箱
> mainその中の main(本文の入れ物)
> div:eq(0)その中に並んでいる箱の、0番目(=一番上)
> pその中の、値段の行

ページの側では、りんごの箱には item、値段の行には price という名前(class)が付いています。でも PAD はそれを使わず、「main の中の一番上の箱」として覚えました。「りんごの箱」とは覚えていません。

番号が付くのは、同じ箱が並んでいた所だけ

main の下には箱が3つ並んでいたので :eq(0) と番号が付きました。一方、body のすぐ下の箱は1つだけだったので、番号が付いていません。

以前、この万屋のページで同じことをしたときは、div:eq(0) > div:eq(1) のように上のほうにも番号が付きました。どこに番号が付くかは、選んだときのページの形しだいです。このあとの結果にも効いてきます。

※ :eq(0) の意味を説明した公式の文書は見つかりませんでした。「0番目」と読んでいるのは、書き方と、このあとの結果からです。

ページを3通りに変えて、同じフローを動かした

フローには一切手を付けず、ページの中身だけを入れ替えて、そのたびに実行しました。結果は、毎回ファイルの更新時刻が前の回より新しいことを確かめてから読んでいます。

ページの変わり方ファイルに書かれた値PAD の画面
いつもの形120円準備完了
一番上に「お知らせ」の箱が1つ増えた120円準備完了(正しく取れた)
先頭に商品が1つ増えた150円準備完了(エラーなし・違う値)
全体を包む箱が1段増えた書かれない止まった
同じセレクターが、ページの変化でどこを指すかの図。いつもの形ではりんごを指す。先頭に商品が増えるとその新しい商品を指す。全体を包む箱が1段増えるとmainが見つからず止まる
同じセレクターが、ページの変わり方によってどこを指すか。

一番上に「お知らせ」の箱が増えた → 止まらなかった

「臨時休業のお知らせ」の帯がページの一番上に増えた形です。これは止まらず、正しく 120円 が取れました。

理由は、さっきの「番号が付いていなかった」所です。PAD は body のすぐ下を「0番目の箱」ではなく「箱」としか覚えていなかったので、お知らせの箱が増えても、中に main がある箱のほうへ進めました。上のほうに番号が付いていたら、ここで外れていたはずです。どこで止まるかは、最初にどんなページで選んだかで変わります。

先頭に商品が1つ増えた → エラーなしで、別の値段を取った

試験用のページ。一番上に新しい商品「なし 150円」が増え、その下にりんご120円、みかん80円、ぶどう300円が並んでいる
「なし」が一番上に増えた形。りんごの値段は 120円 のままです。
いちばん困るのはこれ

ファイルに書かれたのは 150円。りんごではなく、新しく増えた「なし」の値段です。

PAD の画面は「準備完了」のままで、エラーは何も出ていません。フローは最後まで動き、ファイルもきちんと書き換わりました。

div:eq(0) は「りんごの箱」ではなく「一番上の箱」だからです。止まってくれれば気づけますが、これは気づけません。取った値を毎日どこかに貯めていたら、ある日から別の商品の値段が混ざります。

全体を包む箱が1段増えた → 止まった(Data extraction element not found.)

見た目はいつもの形とまったく同じで、ページの中で全体をもう1枚の箱で包んだだけの形です。サイトの見た目を作り直したときなどに起きる変化です。

こちらは止まりました。

Power Automateのデザイナー画面。2行目のWebページからデータを抽出するに赤い印が付き、エラーリストに Data extraction element not found. と表示されている
2行目で止まり、エラー リストに「Data extraction element not found.」。下のステータスは「見つかったランタイム エラー」。

body > div > main は「body のすぐ下の箱の、すぐ下の main」という意味なので、間に箱が1段はさまると main が見つかりません。

エラーの文は、日本語の画面でも英語のまま Data extraction element not found. でした(「データを取り出す場所が見つからない」)。ほかの解説でよく見る「セレクター ○○ を含む要素が見つかりません」という文とは違います。クリックや入力のアクションでは、また別の文で出るのかもしれません(そちらは試していません)。

止まった回は、ファイルに前の値が残る

止まった回は3行目まで進まないので、ファイルは書き換わりません。このときファイルには、ひとつ前の回の 150円 が残っていました。

ファイルだけを見ていると、古い値を今日の値だと思ってしまいます。ファイルの更新日時も一緒に見るようにすると気づけます。

直す:番号ではなく「名前」で探すように書き換える

番号で覚えているのが原因なので、名前で探すように書き換えます。ページの中で、りんごの箱には item、値段の行には price という名前が付いています。そこで、こう書き換えます。

セレクター意味
PAD が作ったものhtml > body > div > main > div:eq(0) > pmain の中の一番上の箱の値段
書き換えたものdiv.item:contains("りんご") > p.price「りんご」と書いてある item の箱の、price の行

書き換え方(文字でコピー → 書き換え → 貼り戻す)

この「Web ページからデータを抽出する」の設定画面には、セレクターを書き換える欄がありません。そこで、さっきと同じくアクションを文字にして書き換えます。

  1. 2行目のアクションをクリックして Ctrl+C
  2. メモ帳に貼り、$''' と ''' にはさまれたセレクターの部分だけを書き換える
  3. 書き換えた1行をまるごとコピーし、PAD で1行目をクリックしてから Ctrl+V(1行目の下に、書き換えたアクションが入ります)
  4. 元の2行目を選んで Delete

書き換えたあとの1行は、こうなります。

WebAutomation.ExtractData.ExtractSingleValue BrowserInstance: Browser ExtractionParameters: {[$'''div.item:contains("りんご") > p.price''', $'''Own Text''', $''''''] } TimeoutInSeconds: 60 ExtractedData=> DataFromWebPage

直したあと、同じように動かした

ページファイルに書かれた値PAD の画面
いつもの形120円準備完了
お知らせ・先頭の商品・包む箱を全部いっぺんに入れた形120円準備完了

書き換える前のセレクターなら、全部入りの形では止まります(包む箱が1段増えているので)。そこで 120円 が取れたので、書き換えたものが効いています。:contains("…") という書き方も、PAD はそのまま受け付けました。

名前は、ページの中身を見て探す

取りたい所にどんな名前が付いているかは、Edge でその文字を右クリックして、メニューのいちばん下の「開発者ツールで調査する」を選ぶと、ページの中身(HTML)が開いて確かめられます。 試験ページの中身は、こうなっていました。

<div class="item">
  <h2 class="name">りんご</h2>
  <p class="price">120円</p>
</div>
直した形にも、壊れ方はある

名前で探すようにすると、箱が増えたり並びが変わったりしても外れません。そのかわり、名前のほうが変わると外れます。サイトの作り直しで price が別の名前になる、商品名が「りんご(ふじ)」になる、といった場合です(後者は「りんご」を含むので通るはずですが、試していません)。

番号で覚える形と、名前で探す形は、壊れ方が逆になります。同じことを Python と PAD で比べたウェブページの更新チェックの記事でも、この違いを表にしています。

ほかにも、ここで止まった:ライブ Web ヘルパーが出ない

今回の作業では、最初の段階でも1回止まりました。2行目を作ろうとしても、Edge の上にライブ Web ヘルパーが出てこず、「抽出するデータを指定していません」のままになりました。

原因は、Edge に Power Automate の拡張機能を入れる前に開いた Edge のままだったことです。Edge をいったん全部閉じ、フローの1行目から Edge を開き直したら、ヘルパーが出ました。拡張機能を入れたら(またはオンにしたら)、Edge は開き直す、と覚えておくと早いです。

Edge の拡張機能のページのレビューにも、「拡張機能を入れているのにつながらない」「更新したらつながらなくなった」という声が並んでいます(2026年10月8日に見た時点で、評価は星2つの表示・172件)。原因は人によって違うはずで、ここで確かめたのは「拡張機能を入れたあとは Edge を開き直す」ことだけです。

確かめていないこと

  • 試したのは、自分で作った試験ページです。実際のサイトで、どの変化がどれくらい起きるかは測っていません。
  • 試したアクションは「Web ページからデータを抽出する」だけです。クリックや入力のアクションでのエラーの文は見ていません。
  • UI 要素を使うアクションでは、セレクターを画面で書き換える仕組み(セレクタービルダー)があります。この記事の手順ではそれを使っていません。
  • Microsoft の文書には、壊れたセレクターを実行中に直してくれる機能(プレビュー)も載っています。ただ、条件が職場や組織のアカウント向けで、無料版では使えないと読めます(試していません)。

検証した環境:Windows 11 / Power Automate(無料版・Microsoft アカウントでサインイン)/ Microsoft Edge + Microsoft Power Automate 拡張機能。試験ページは自分で作り、自分のパソコンの中だけで開いて、中身を入れ替えながら実行しました(2026年10月8日)。

コメント

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