【Power Automate Desktop】自分だけの情報収集ツールを作ろう!|第1章
この記事をご覧の皆さんは、日頃から最新の技術動向をチェックされている方が多いと思います。
私もその一人で、特に生成AIに関する情報を日々チェックしています。
しかし、この分野は変化が激しく、最新のニュースを追うだけでもそれなりに負担がかかります。
そこで今回から3つの章に分けて、無料のRPAツール「Power Automate Desktop」を使い、
①ニュースサイトから最新の生成AIのニュースを抽出
②AIで要約
③Slackに通知
という作業を自動化していきます。
今回は第1章として、ニュースサイトから記事を抽出するところまで解説します。
ぜひ一緒に操作して、自分だけの情報収集ツールを開発しましょう!
PADを起動する
Windowsの検索窓に「Power Automate」と入力して起動してください。
※表示されない場合は公式ストアからインストールしてください。
https://apps.microsoft.com/detail/9nftch6j7fhv?hl=ja-JP&gl=JP

「新しいフロー」をクリックして表示されたウィンドウで任意のフロー名を付けて「作成」をクリックします。

フロー編集画面が立ち上がります。

記事を抽出する
ブラウザを立ち上げる
アクション一覧からブラウザー自動化を開き、普段使用しているブラウザを選択します。
今回は「新しいChromeを起動する」をダブルクリックで追加します。

初期URLにニュースサイトのURLを入力し保存します。
※今回はLedge.aiさんのサイトをお借りして解説します。

新しいChromeを起動するアクションが追加されました。
この状態で実行すると、ニュースサイトが開いた状態でブラウザが起動します。

以下の画面が表示されたらブラウザ操作用の拡張機能が入っていません。
拡張機能を取得するを押し、Chromeに追加を押してインストールしてください。


タイトルを抽出する
画面上部のレコーダーボタンをクリックします。

するとレコーダー画面が立ち上がります。
「記録」をクリックすることで、PADがこれから行う作業を理解して操作の一つ一つを記録してくれます。

記録中はボタンなどの要素をPADが自動で認識し、赤い枠線で囲われます。
抽出したいテキストが正しく枠で囲われていることを確認し、右クリックしてください。
表示されたメニューから、「要素の値を抽出」>「テキスト(〇〇)」を選択します。

レコーダーにアクションが追加されました。
今回の記事だと、「東芝、量子コンピューターの…」の文章がinnertextという箱、つまり変数に格納されています。
名前がわかりづらいので、「innertext」をクリックして「記事のタイトル」のようなわかりやすい変数名に変更することをお勧めします。

本文を抽出する
赤枠が出た状態でタイトルをクリックして記事を開きます。

記事全体が赤枠で囲われた状態でタイトル同様の手順で抽出します。

サイトによっては見出しやボタンが選択されてしまう場合があります。
この場合は、まずは一部でもいいので抽出します。

レコーダーの完了を押してフロー編集画面に戻り、一部のみ抽出したアクションをダブルクリックして開きます。

UI要素の編集アイコンをクリックします。

「要素」をスクロールし、一番下のチェックを外して保存をクリックします。

これで記事全体が抽出できるはずです。
それでも一部しか抽出できない場合はさらに一つ上のチェックを外してみてください。
PADでは画面上の要素を入れ子構造で認識しています。
上の例だと「ブラウザ>本文>見出し」のように要素を特定していたのを一番下(見出し)のチェックを外すことで「ブラウザ>本文」のように本文全体を指定できるようになったということです。
このように、一番下のチェックを外すことで抽出範囲を広げるテクニックはよく登場するので覚えておきましょう!
補足:レコーダーを使用した際に追加されるコメントは削除してOKです。

本文が抽出できたので再度レコーダーを起動し、ブラウザの戻るボタンをクリックします。

ループで複数記事を抽出する
レコーダーを閉じて一度フローを実行してみましょう。

エラーが起きなければ正常に実行できています。
実行すると右側のフローパネルの変数に抽出したテキストが入ります。
ダブルクリックで全文を確認することができます。

上手く抽出できています。
現時点では1つの記事しか抽出できませんが、今回はトップ3記事を抽出します。
ここで活用したいのが「ループ」アクションです。
アクション一覧のループを開き、「Loop」を選択します。

各項目は以下のように入力します。

各項目の意味は以下の通りです。
開始値:どこから数え始めるか
終了:どこまで数えるか
増分:どれくらいずつ増やすか
生成された変数:今何回目か
今回の場合は1,2,3というループになります。
つまりループ内の処理が3回繰り返されます。
ブラウザを開くのは1回で良いので、後続の以下の操作のみループで囲みます。
・タイトルを抽出
・記事をクリック
・本文を抽出
・戻る

セレクターを編集する
この状態で実行すると同じ記事を3回開いてしまうので、トップ3記事を開くように編集します。
PADではブラウザの要素を「セレクター」という入れ子構造で識別しています。
UI要素の編集アイコンをクリックするとセレクターを編集できます。

タイトル抽出アクションのセレクターを確認すると、記事のタイトルが見えます。

これはPADが「このタイトルの記事はどこだろう?」と探している状態です。
これだとそのタイトルに一致した記事しか抽出できません。
これを「1記事目…2記事目…」と探すように設定する必要があります。
右上のテキストエディタのボタンをクリックすることでセレクターを手動で設定できるようになります。

ブラウザに戻り、どこでも良いのでサイトを右クリックしてください。
メニューから「検証」を選択します。

ブラウザの右側にこのようなパネルが表示されます。
これがPADが認識している入れ子構造の正体「HTML」です。

左上のアイコンをクリックします。

この状態で先ほど抽出した記事のタイトルをクリックします。

右側のパネルを見ると青くハイライトされます。

ハイライトされたテキストを右クリックし、Copy>Copy selectorを選択します。

これでセレクターをコピーできました。
メモ帳に張り付けて中身を確認してみましょう。
#app-root > div > div > div.flex.flex-col > main > div > div > div > div > div > div.mb-10.px-4.md\:mb-20.md\:px-6 > div > div.md\:w-3\/5.md\:max-w-\[728px\].lg\:w-2\/3.xl\:w-4\/5 > div:nth-child(1) > div.flex.flex-col.gap-4 > div:nth-child(1) > div.mt-2.flex.flex-row.gap-4 > div > a > h3このセレクターには「サイト>新着記事一覧>1記事目>タイトル」のような入れ子構造が表現されているのですが、分かりづらいですよね。
2記事目、3記事目を抽出したい時は、
「サイト>新着記事一覧>〇記事目>タイトル」の
〇記事目の箇所が特定できれば良いわけです。
そこで、試しに2記事目のセレクターも同様にコピーしてみます。
左上のアイコンをクリックして

2記事目のタイトルをクリック、

Copy selectorをクリックします。

1記事目のセレクターと今コピーした2記事目のセレクターを比較してみます。
#app-root > div > div > div.flex.flex-col > main > div > div > div > div > div > div.mb-10.px-4.md\:mb-20.md\:px-6 > div > div.md\:w-3\/5.md\:max-w-\[728px\].lg\:w-2\/3.xl\:w-4\/5 > div:nth-child(1) > div.flex.flex-col.gap-4 > div:nth-child(1) > div.mt-2.flex.flex-row.gap-4 > div > a > h3
#app-root > div > div > div.flex.flex-col > main > div > div > div > div > div > div.mb-10.px-4.md\:mb-20.md\:px-6 > div > div.md\:w-3\/5.md\:max-w-\[728px\].lg\:w-2\/3.xl\:w-4\/5 > div:nth-child(1) > div.flex.flex-col.gap-4 > div:nth-child(2) > div.mt-2.flex.flex-row.gap-4 > div > a > h31か所だけ異なる点があります。
1記事目はdiv:nth-child(1)になっていた箇所が2記事目ではdiv:nth-child(2)になっています。
つまりdiv:nth-child(何記事目か)という構造になっていそうです。
PADに戻り、古いセレクターを削除して今コピーしたセレクターで上書きします。

div:nth-child(2)の2を削除します。

左上の{X}のアイコンをクリックし、ループした回数を選択します。

ループした回数は1,2,3と繰り上がっていくため、1記事目、2記事目…というようにクリックする記事も繰り上がっていきます。
保存してフロー編集画面に戻ります。

補足:変数は%変数名%のように%で囲まれます。
動作確認
作成したフローを実際に動作確認してみます。
動作確認するときは画面下部の実行遅延を大きく設定することで動作がゆっくりになり視覚的に分かりやすくなります。
今回は2000に設定します。

実行遅延とは各アクション間の待機時間のことです。
サイトを開いて、タイトルを抽出して、クリックして…という各アクションごとに2000ミリ秒(=2秒)待ってから実行されます。
それでは実行してみます。

実行中の動作確認は開いている記事や変数に注目してみましょう。
また、右上のアイコンから一時停止、停止が行えます。

問題なく動作したら忘れずに保存ボタンで保存しておきましょう。

まとめ
上手く動作しましたか?
今回は自分だけの情報収集ツールを作ろう!第1章ということで「①ニュースサイトから最新の生成AIのニュースを抽出」を解説しました。
上手くいかないところがありましたらコメントでご質問ください!
次回の「②AIで要約」では、今回作成したフローに記事をAIで要約する処理を追加します。
ぜひ続けてご覧ください!
このアカウントでは、知っていると周りと差がつく自動化・効率化に関する情報を発信していきます。
ぜひフォローして時間と余裕を取り戻しましょう!
#RPA #PowerAutomateDesktop #PAD #自動化 #業務効率化 #DX #生成AI #AI
