広告

Power Automate Desktopを使うと、Web上のデータの一覧をカンタンに取得できますが、さらに一歩すすめてその中の特定のリンクだけをクリックする方法を確認しておきましょう。

条件に一致するリンクだけをクリックしたい

RPAを使うと、Web上のデータを簡単に取得することができます。

一般的に「スクレイピング」といわれるもので、表示されているデータをまとめて収集したい場合などに非常に役立つ機能です。

今回はこの機能を活用しつつ、サイト上に表示されているたくさんのリンクの中から、特定のものだけをクリックする方法について確認してみましょう。

具体的には、国税庁のHP上に掲載されているトピックスのうち、特定の文字列を含むものだけをクリックするフローをPower Automate Desktop(以下「PAD」)でつくってみたいと思います。


では実際の作成手順を確認していきましょう。

ブラウザー(今回はEdgeを使用します)で国税庁のHPを開いておいてから、PADのWebレコーダーを起動します。

以下の画面で、「詳細」をクリックして、「タブを選択」のところで、「国税庁」を選択してから「次へ」をクリック。

記録画面が表示されたら、左上の「レコード」を押して記録を開始しましょう。

記録する操作としては、

  1. 「トピックス」の中にある「表示件数を増やす」をクリック
  2. 「トピックス」欄に表示されているデータを抽出する(スクレイピング)

の2点を行います。

1については、次のように「表示件数を増やす」のところに赤枠が表示された状態でクリックします。

2については、最初のトピックスのリンクを右クリックして、「要素の値を抽出」-「テキスト」をクリック。

続けて、2番目のトピックスのリンクをクリックして、同じく「要素の値を抽出」-「テキスト」をクリック。

他のトピックスにも、次のように緑点線の枠が表示されれば、すべてのデータを対象として認識してくれています。

ここでWebレコーディングを終了すると、次のようなフローが記録されているはずです。

なお、私の環境だけかもしれませんが、このフローを実行すると、2のところで「Edgeを操作できない」というエラーが何度も出たため、このアクションを開いて、「エラー発生時」をクリックしてから、「エラーが発生した場合にアクションを再試行する」のチェックをオンにしています。

データの中から特定の文字列を探すには「For each」と「If」を組み合わせる

今回は、こうして抽出したトピックスの中から「コロナ」という文字が含まれるトピックスについて、新しいタブで自動的に開く、という処理を行います。

先ほど抽出したデータは、今回のケースでは「OutputData」という変数の中に入っています(変数名は、先ほどのフローの4行目で確認する事ができます)。

この「OutputData」には、記事執筆時点で26行のデータが含まれています。

これらのデータから一行ずつ取り出して、「コロナ」という文字が含まれているか確認するには、「For each」というアクションと「If」というアクションを組み合わせます。

アクション一覧から、For eachを先ほどのフローの続きにドラッグして、「反復処理を行う値」として先ほどの「OutputData」を選択します(欄右端の「x」をクリックすると変数一覧が表示されますので、そこから選んでください)。

すると、「生成された変数」欄に「CurrentItem」という表示があります。

これは、「OutputData」から一行ずつ取り出したデータを入れる入れ物となりますので、次に設定する「If」の中では、ここに「コロナ」という文字列が含まれているか確認することになります。

「For each」と「End」の間に「If」というアクションをドラッグして、次のように設定してみましょう。

「CurrentItem」という入れ物の中に「OutputData」から取り出したデータが入っていますので、「最初のオペランド」にそれを指定するのですが、その後に[0]とつけています。

これは「CurrentItem」の何列目のデータを対象とするか示すためのものです(1列目を指定するときは0を使います)。

今回は、1列しかないデータのため、最初[0]をつけなかったのですが、うまく動作しなかったため、このようにしています。

なお、本来は[行番号][列番号]の順に指定するのですが、「For each」で順番に行を取り出すため、行番号は省略しています。

あとは、「演算子」と「2番目のオペランド」に「次を含む」「コロナ」と入れれば、「コロナ」という文字列を含むトピックスだけを見つけ出すための条件設定は完了です。

ここまででフローは次のようになります。

広告

リンクをクリックしたときに新しいタブが開かないときの対処法

次に「If」の中に入れる処理について考えますが、ここでひとつ問題が。

この国税庁のHPですが、トピックスのリンクをクリックすると、新しいタブが開かずに、そのページのままリンク先が開いてしまいます。

探したい文字を含むトピックスがひとつだけであれば、「Webページのリンクをクリックします」というアクションだけを使えばよいのですが、複数ある場合には2つ目以降のリンクを開くときにエラーとなってしまいます。

そこで今回は、探している文字列が見つかった時点で、開いているのと同じページを新しいタブで開き、その新しいタブのリンクをクリックすることにします。

アクションから「新しいタブを作成」を「If」と「End」の間にドラッグして、次のように設定します。

ここで、下の部分に「生成された変数:NewBrowser」となっていることに注意しておいてください。

元々のタブは「%Browser%」という名前がついていましたが、新しく開いたタブは「%NewBrowser%」という名前になっていますので、この後これを指定しないときちんと動作しなくなります。

ここまでの作業で作成したフローは次のようになっています。

このあと8行目の次に、対応するリンクをクリックための「Webページのリンクをクリックします」というアクションを入れるのですが、そのためにはセレクターという考え方を理解する必要があります。

セレクターの設定方法等を説明すると長くなってしまうため、この続きは次回の後編でまとめます。

投稿者

加藤 博己
加藤 博己加藤博己税理士事務所 所長
大学卒業後、大手上場企業に入社し約19年間経理業務および経営管理業務を幅広く担当。
31歳のとき英国子会社に出向。その後チェコ・日本国内での勤務を経て、38歳のときスロバキア子会社に取締役として出向。30代のうち、7年間を欧州で勤務。

40歳のときに会社を退職。その後3年で税理士資格を取得。

中小企業の経営者と数多く接する中で、業務効率化の支援だけではなく、経営者を総合的にサポートするコンサルティング能力の必要性を痛感し、「コンサル型税理士」(経営支援責任者)のスキルを習得。

現在はこのスキルを活かして、売上アップ支援から個人的な悩みの相談まで、幅広く経営者のお困りごとの解決に尽力中。
広告