見出し画像

【Power Automate Desktop】自分だけの情報収集ツールを作ろう!|第2章

無料のRPAツール、Power Automate Desktopで自分だけの情報収集ツールを開発する解説記事の第2章です。

前回の記事をまだご覧になっていない方は第1章からご覧ください。

3章に分けて解説している本シリーズ、今回は②AIで要約を解説します。
①ニュースサイトから最新の生成AIのニュースを抽出
②AIで要約
③Slackに通知


PADからAIを呼び出す方法

皆さんがAIに文章を要約させる時、ブラウザでChatGPTやGeminiなどのAIツールを開く方が多いと思います。

最も手っ取り早いのが、この操作をそのままPADで再現する方法です。

PADからAIを使用する方法は主に2つあります。
1つは人が操作するのと同じようにブラウザで使用する方法、
もう1つはAPIを使用する方法です。

APIとは?

APIはアプリ同士がやり取りする窓口のような仕組みで、画面操作を必要とせず高速で安定しているのが特徴です。
しかし、事前準備や必要な知識が多いため後日別の記事で解説します。

ChatGPTで要約する

今回はAPIを使用せず、ブラウザでChatGPTを使用します。

第1章で作成したフローにAIで要約するアクションを追加していきます。

ブラウザでChatGPTにアクセスする

現在のフローにニュースサイトを開くアクションがあるので、その後にChatGPTを開くアクションを追加します。

「新しいchromeを起動する」をニュースサイトを開く処理の後ろに追加します。

ChatGPTのURLを入力して保存します。

フローを途中で止める

フローを途中まで実行したい時は、アクションの左側の数字あたりをクリックすることで赤い丸(ブレイクポイント)が表示されます。
この丸の手前で処理が一時停止します。

この状態で実行すると1、2が実行され、3が実行される手前で停止します。

ここまで実行するとウィンドウが2つ立ち上がります。

ChatGPTにメッセージを送信する

停止ボタンを押して、レコーダー画面を開きます。

次に、ChatGPTにメッセージを送るために入力欄を右クリックします。
しかし、今まで表示されていた「テキストフィールドに入力する」が表示されていません。

実はサイトによっては入力欄が上手く認識されない場合があります。
このような場合に有効なのが「クリップボードテキストを設定」アクションです。

まずは入力欄をクリックします。

レコーダーを閉じて、クリップボード内の「クリップボードテキストを設定」を今記録したアクションの後ろに配置します。

「クリップボードテキスト」にChatGPTへの指示を設定します。
今回は以下のように入力します。

%%で囲まれている「記事の本文」は第1章で自分で命名した変数名です。
フロー実行時は実際に抽出したテキストが入力されます。

以下の内容を100文字程度で要約してください。
%記事の本文%

次に、マウスとキーボード内の「キーの送信」アクションを配置します。

送信するテキストを以下のように設定し、Ctrl+Vのショートカットキーを送信しEnterを押します。

{Control}({V}){Enter}

これでChatGPTにメッセージを送信できるようになりました!

ループに組み込む

ChatGPTを開くアクションからメッセージを取得するアクションまでをループ内の後ろに移動します。

レコーダーで記録した際に自動で生成されたこのステップを削除します。

次に、ChatGPTのメッセージ入力欄をクリックしたアクションの「Webブラウザーインスタンス」を%Browser2%に変更します。

これは、どのサイトに対しての操作か?をPADに伝えるための設定です。
そのため、初めにchrome起動アクションで設定した内容と一致させる必要があります。
以下の例だとChatGPTのウィンドウはBrowser2に格納されています。

要約結果を取得する

ここまでの処理を実行してみましょう。
ループのEndにブレイクポイントを設定することで1回目のループで処理を止めることができます。

実行するとChatGPTからの要約が返ってくるところまで完了しています。
次に、返信を右クリック>要素の値を抽出で要約内容を抽出します。

第1章同様にテキストが変わっても抽出できるようにテキスト一致のチェックを外しておきます。

この状態で実行してみましょう。
すると要約を抽出するアクションで要素が見つからない旨のエラーがでます。

これは表示にタイムラグのある要素で発生しやすいエラーで、抽出しようとした時点で画面に要約内容が表示されていないことが原因です。
このような場合には、抽出前に待機アクションを入れましょう。

10秒に設定して保存します。
安定しない場合は調整してください。

補足:ChatGPTの返信のセレクターはsection:nth-child(2)、section:nth-child(4)…のようにループのたびに2ずつ増えていく箇所があります。
セレクターを取得する方法は第1章:セレクターを編集するを参照してください。
以下のように%ループした回数*2%を使用して2ずつ増やして取得します。

#thread > div > div.relative.basis-auto.flex-col.-mb-\(--composer-overlap-px\).pb-\(--composer-overlap-px\).\[--composer-overlap-px\:28px\].grow.flex > div > section:nth-child(%ループした回数*2%) > div > div > div.flex.max-w-full.flex-col.gap-4.grow > div > div > div > p

変数に格納する

今の状態だとループするたびに要約内容が変数に上書きされてしまいます。
最終的には3つの記事すべての要約をSlackに通知したいため、要約内容を記録する変数を作ります。

変数の設定アクションをループの一番後ろに入れます。

値を以下のように設定します。

Slack通知内容という変数に保存されているテキストにタイトルと要約内容を追加していくことができます。
ここで入力した改行もそのまま反映されるので、見やすい位置で改行してください。

%Slack通知内容%%記事のタイトル%
%要約内容%

動作確認

それでは実行してみましょう。
フローが正常終了し、このような内容が取得できていたら成功です。

前まで動いていたアクションが動かなくなった時の対処法

問題なく動いていたアクションが突然動かなくなることがあります。
その場合はアクションをダブルクリックし、「要素の追加」で要素を再度取得してみましょう。

エラーが解決できない時は実装方法を変えてみるのも一つの手です。

中でもキーの送信アクションは使用頻度の高いアクションです。

ブラウザの戻るボタンが押せない時は「{Alt}({Left})」のショートカットキーで代用したり、クリックできない時は{Tab}と{Enter}でサイト上の要素を移動してからクリックする動きを再現することもできます。

他にも、PCを再起動することですんなり上手くいくこともあります。

まとめ

ブラウザーの自動化はサイトによってセレクター構造が異なるため、こまめに実行→修正を繰り返して開発していく必要があります。

開発する中で不明点がありましたらコメントください!

次回の「③Slackに通知する」では、今回要約した内容をSlackで確認できるように通知する機能を追加します。
ぜひ続けてご覧ください!

このアカウントでは、知っていると周りと差がつく自動化・効率化に関する情報を発信していきます。

ぜひフォローして時間と余裕を取り戻しましょう!

#RPA #PowerAutomateDesktop #PAD #自動化 #業務効率化 #DX #生成AI #AI


いいなと思ったら応援しよう!