前回に引き続き、Power Automate Desktop(以下「PAD」)を使って、国税庁のHP上に掲載されているトピックスのうち、特定の文字列を含むものだけをクリックするフローをつくってみましょう。

セレクターはリンクを特定するための住所みたいなもの

前回の記事では、国税庁のHPにあるトピックスのデータを抽出し、そこからひとつずつデータを取り出して、「コロナ」という文字を含むものを探すところまでつくりました。

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

セレクターというのは、粗っぽい説明ですが、Webサイトのリンクそれぞれにつけられた「住所」や「メールアドレス」みたいなものと理解してください。

郵便物を正しく送るには正しい「住所」を書く必要がありますし、Eメールをきちんと相手に届けるには正しい「メールアドレス」を書く必要があります。

これと同じで、PADに「クリックして欲しいリンクはコレだよ」と教えるための「住所」のような役割を果たすのが「セレクター」だと思ってください(厳密には違うのかもしれませんが、今回はそのように理解しておいてください)。

ではこのセレクター、どうやって調べればいいのか?

そのための準備として、再びWebレコーダーを起動して、国税庁のHPの最初と2番目のトピックスをクリックする操作を記録してみましょう。

記録すると、次のようなフローが記録されてます。

よく見ると、最初のトピックスをクリックした操作は「a2をクリック」、2つ目のトピックスをクリックした操作は「a3をクリック」となっています。

この「a2」や「a3」の詳細を確認するために、PADの右側の「UI要素」画面を使います(表示させるためには、右端のボタンのうち、上から2番目のものを押してください)。

ここでUI要素画面の中にある「a2」をダブルクリックしてみましょう。

「UI要素”a2″のセレクター」という画面が表示されます。この赤枠部分が「セレクター」です。

広告

HTMLがわからないからとあきらめない。比較して違いを見つける。

この「セレクター」、ホームページを作成する際に使う言語であるHTMLに詳しい方であれば、「自分で書ける」という方もいらっしゃいますが、PADを使っていてもHTMLまで詳しくないという方も多いと思います(私もそのひとりですが)。

ここで「HTMLがわからない」という理由で諦める必要はありません。

複数の「セレクター」を比較して、規則性を見つけられればなんとかなります。

先ほどの「UI要素”a2″のセレクター」画面の赤枠部分をさらにダブルクリックすると、次の画面が表示されます。

この状態でセレクターをコピーすることができますので、a2とa3の「セレクター」を並べてみましょう(上の行がa2、下の行がa3です。赤字強調は筆者による)。

html > body > div:eq(0) > div:eq(1) > div > div:eq(0) > div:eq(3) > div:eq(0) > table > tbody > tr:eq(0) > td > a


html > body > div:eq(0) > div:eq(1) > div > div:eq(0) > div:eq(3) > div:eq(0) > table > tbody > tr:eq(1) > td > a

比べてみると、一カ所だけ書き方が違うことがわかります。

このことから、

「恐らく、この違う部分がトピックスの並んでいる順番と関係しているはず」

と推測することができます。

そこで、この部分の数字を変える方法を検討します。

RPAを含めたプログラムで、状況によって数字を変えたい場合には、「変数」を使います。

ところが「赤字の部分を変数に置き換えれば、なんとかうまく動くのでは?」と予想はつくものの、私が調べた限りでは「For each」には「今、データの何行目の処理をしている」という情報を知る方法がありません…。

広告

必要なデータがなければ自分で作ってしまえばいい

知る方法がないからといって、ここで諦める必要はありません。

プログラムでは必要な情報がなければ、自分でつくってしまえばいいんです。

今回は何行目の処理をしているのか数えるために「Count」という名前の変数をつくることにします。

5行目のあとに「変数の設定」というアクションを入れます。

「設定」のところは最初「NewVar」となっていると思いますが、今回はわかりやすくするため「Count」に変更します(NewVarのところをダブルクリックして、前後の%を残したままCountに変更します)。

「宛先」となっている部分は、変数に入れておく数字を設定するためのものですが、トピックス一行目のセレクターの中で変更したい部分が「0」でしたので、ここも「0」にしておきます。

一回処理が終わるごとにCountの数字を増やしたいわけですから、For eachの処理が終わる直前、つまりFor eachに対応するEndの直前に、再度「変数の設定」アクションをドラッグして、Countという変数に1を足す式を入れます。

こうすることで、Countの中身を見れば、「何行目まで処理が終わったか」ということがわかります。

そして、このCountの数字こそ、先ほどのセレクターの変更したい赤字部分に入れるべき数字です。

(最初のトピックスを処理しているときはCountは0、2行目のトピックスを処理しているときはCountは1となっています)

では、このCountを使って最後の仕上げをしていきましょう。

先ほどWebレコーディングで記録したa2をクリックするアクションを、「If」の中にある「新しいタブを作成」の次に移動させましょう。

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

先ほど「セレクターは自分で書ける、という人もいる」と書きましたが、なにもないところから書けるのであれば書き換えることもできる、ということですから、a2のセレクターを書き換えてみましょう。

UI要素画面でa2を2回ダブルクリックすると、先ほどのセレクタービルダーという画面になり、セレクターを編集できる状態になります。

セレクターの最後の方の「> tr:eq(0) > td > a」の部分の「0」を「%Count%」と書き換えて「更新」「閉じる」とクリックしてください。

書き換え後は、次のようになります。

Webレコーダーで記録した14行目以降の処理は不要なので削除してしまいましょう。

完成したフローは次のようになります。

この状態で「実行」ボタンを押してみると…

最初に開いた国税庁HP以外に「コロナ」という文字を含む3つのタブが開きました。

(右から2番目のタブはPDFファイルが開いているためタイトルがわからなくなっていますが、「税理士試験における新型コロナウイルス感染症の感染拡大防止を踏まえた注意事項について」というトピックスです)


かなり長くなってしまいましたが、いかがでしたでしょうか?

今回の作り方を応用すれば、例えば会計事務所の業務であれば

「e-Taxのメッセージボックスから取得したいキーワードを含むメッセージのみを保存する」

といったことも可能となります。

色々と応用することも可能ですので、身の回りの業務の自動化にご活用いただければと思います。

投稿者

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

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

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

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

さらに、商工会議所での講師やWeb媒体を中心とした執筆活動など、税理士業務以外でも幅広く活動を行っている。
広告