今回はweb上の情報を取得(スクレイピング)してExcelで計算するところまでを実際のフローで見ていきましょう。
この記事を読めばweb上のデータ取得と、Excel操作を学べます。
今回は自分のブログを起動して記事のタイトルとPV数を取得しExcelへ貼り付け、Excelにて合計を表示するというフローになります。
まずはブラウザを起動してみよう
まずはブラウザを起動します。今回はChromeを利用してwebデータを取得していきたいと思います。
では、ブラウザー自動化から新しいChromeを起動するアクションを選択します。
- 起動モード:新しいインスタンスを起動する
- 初期URL:https://koutanu.com
- ウィンドウの状態:標準
これで新しくChromeのブラウザで自分のブログサイトを開くことができました。
データ抽出のやり方
先ほどと同じくブラウザー自動化よりWebページからデータを抽出するを選択します。
- Webブラウザーインスタンス:先ほど開いたブラウザのインスタンスを選択
- データの抽出元:すべて使用できます
- データ保存モード:Excelスプレッドシート
ここでいったん保存しておきます。
次に新しいChromeを起動するで登録した初期URLのページを開きます。
そして今作成したWebページからデータを抽出するのアクションをもう一度クリックして開きます。
このアクションの詳細画面が開いている状態で初期URLのページを開いてみてください。するとライブWEBヘルパーが開き画面上に赤枠がでてきます。
さて今回は記事のタイトルとPV数を取得したいのでまずは記事のタイトルの所で右クリックをして要素の値を抽出、その中のテキスト()を選択します。このテキストの部分は実際に取得したいテキストや値が入っている物を選べば大丈夫です。
つづいて本日の部分の数字に赤枠が来るようにして、また右クリックからテキストを選択します。これで記事のタイトルと、本日のPV数が取得できました。
これでタイトルと本日のPV数の値が取得できました。
同じように次の記事もタイトルとPV数を選びます。するとライブWEBヘルパーの方に残りの記事のタイトルとPV数が取得されているのが分かると思います。
これは、power automate desktop側で自動で繰り返し処理を判断して作成してくれています。
さて次にこのブログにはページ切り替えボタンが記事の下にあります。複数のページに記事が分かれている場合、ボタンを押すアクションなどでページを切り替えたりしますが、このライブWEBヘルパーを使えばそのままページの切り替えも登録することができます。
今回は2ページ目のボタンを選択して右クリック要素をページャーとして設定を選びます。これで次のページを開くことができますし、次のページでも同じようにタイトルとPV数を取得するところまで自動で設定してくれます。
これでライブWEBヘルパーの操作は終わりですので終了を選択してください。これでデータの抽出の設定が終わりました。今回はこの抽出したデータがExcelのスプレッドシートに吐き出されるようになっております。
アクションを保存したらここで一度実行してみましょう。Chromeが開きサイトが開いてデータをページが切り替わりExcelが開きフローが停止します。
ここでExcelが画面の最前面に出てこないことがあります。次からはExcelを操作するのでここで画面を最前面に表示していきましょう。
任意の画面を最前面に表示する
UIオートメーションのウィンドウの中にあるウィンドウにフォーカスするアクションを選択してください。
- ウィンドウの検索モード:ウィンドウのインスタンス/ハンドルごと
- ウィンドウ インスタンス:先ほど開いたExcelのインスタンス
これで自動で開いたExcelの画面を最前面に表示することができます。
画面の最大化
Excelの画面を最前面に開くことができましたが、このままでは最大化されていないので最大化して画面全体に表示してみましょう。
キーの送信で{LWin}{Up}を送信すると画面を最大化することができます。
空の行を取得しSUMを使い合計を表示する
では最後に各記事のPV数を合計してみましょう。
PV数を登録している列の一番最後のセルに合計を表示しましょう。
まずは一番下の行を取得したいのでExcelワークシートから最初の空の列や行を取得アクションを使います。
これでFirstFreeRowに最初の空の行、FirstFreeColumnに空の列が入ります。今回は行を使いたいのでFirstFreeRowを使います。
Excelワークシートに書き込むアクションを使い
- 書き込む値:=SUM(B1:B%FirstFreeRow – 1%)
- 書き込みモード:指定したセル上
- 列:B
- 行:%FirstFreeRow%
に設定します。
書き込む値の部分ですが、FirstFreeRowはデータの入っている一番最後の行の次の空の行の値(今回だと18が入っている)ですので
=SUM(B1:Bの列の一番下の行まで)にしたい場合、B%FirstFreeRow – 1%のように– 1することで空の行ではなくデータの入っている一番最後の行の値(つまり17)を設定することができます。
なのでこの部分は今回は=SUM(B1:B17)という事になります。
書き込む部分の行には、そのまま18行目に書き込みたいので%FirstFreeRow%のまま設定します。
これで19行目に=SUM(B1:B18)を書き込む事ができました。
これによって合計の値を取得することができます。
列の幅の設定
おまけとして、出来上がったExcelを見るとタイトルの部分の列の幅が基本の幅のままでタイトルが見切れてしまっています。
なのでExcelワークシートが含む列/行のサイズを変更するアクションを使い
- サイズ変更のターゲット:列
- 選択範囲:単一
- 列:A
- サイズ変更の種類:自動調整
を設定する事でタイトルの列が自動で調整されて見やすくなります。
まとめ
以上が、Power Automate Desktopを使用してWEBページからデータを取得し、Excelで合計を計算するフローになります。
WEB上からデータを集計する作業を毎日のように行っている方は是非Power Automate Desktopを使って自動化を作成してみてはいかがでしょうか?
Power Automate Desktopでは難しいコードを書かなくても直感的にプログラムを構築することができます。ぜひ当ブログや、書籍などを参考にして日々の業務を少しでも楽にこなしましょう!
コメント