16
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【自動化】無料になったPower Automate DesktopでExcelとWebブラウザを自動操作する

Posted at

Power Automate Desktopが無料に

2021/3/3からMicrosoftのRPAツールであるPower Automate DesktopがWindows10ユーザーに無償提供されるようになりました。
これはお金をかけずにWindows10上でのあらゆる操作を自動化できる可能性を意味します。
胸が熱くなりますね。

早速ダウンロードして使ってみましたので、本記事でご紹介させていただきます。

株価の調査を自動化する

やはり、自動化したい操作の2トップはWebブラウザExcelではないでしょうか。
この2つは定型業務でもよく使われますから、これらを自動化するコツをつかめれば非常に役立ちそうです。

そこで、今回は
「Excelにリスト化されている銘柄の株価をWebサイトで調べて、結果をExcelに記入する」
という一連の操作をPower Automate Desktopで自動化してみたいと思います。

Power Automate Desktopのインストール

下記の公式ページから、「無料でダウンロードする」をクリックしてインストーラをダウンロードしてください。
Power Automate Desktop公式

あとはインストーラの指示通りに進めていけばOKです。特に迷うところはありません。

Power Automate Desktopでフローを作成する

Power Automate Desktopの起動

1.Power Automate Desktopを初めて起動すると、サインイン画面が表示されます。
pad_app_1.png

メールアドレスを入力して、サインインしましょう。
pad_app_2.png

2.サインインに成功すると「国/地域の選択」画面になるので、お住いの国を選択して「開始する」をクリックします。
pad_app_3.png

3.開始するとフローの管理画面になります。初めはフローは1つもないので、「新しいフロー」から作成していきます。
pad_app_4.png

新しいフローの作成

「新しいフロー」をクリックすると、フローの作成画面が表示されます。
ここではフロー名を「株価調査」として作成します。
pad_flow1.png

これがフローの初期画面です。左側の「アクション」から所望の操作を選んで、真ん中の余白部分にドラッグ&ドロップし、フローチャートのような形でグラフィカルにフローを作成していきます。

pad_flow2.png

フローの作り方には大きく2つの方法があります。

  1. レコーダーを使い人間の行った操作を記録してフローのベースを作り、そこから微調整する
  2. 最初からアクションを1つずつ組み立てていく

今回はアクションとフローを基礎から理解していくため、2の方法でやってみましょう。

おおまかなフローのイメージ

実際に作業を始めて行く前に、フローの大枠を考えてみましょう。
今回は下記のようなフローになるはずです。

  1. Excel(株主優待人気銘柄.xlsx)を開く
  2. Excelのリストの1番目の銘柄コードを株価検索のWebサイトで検索する
  3. 検索結果から株価情報をExcelのリストにコピペする
  4. 2番目から10番目まで3,4を繰り返す

Excelを開く

「株主優待人気銘柄.xlsx」というExcelファイルを開き、銘柄コードの列を1行ずつ読み込んでいくという操作を自動化してみましょう。
左側のアクションから
Excel > Excelの起動をドラッグ&ドロップします。

pad_flow3.png

ドラッグ&ドロップするとアクションの詳細画面が開きます。
pad_flow4.png

Excelの起動は"次のドキュメントを開く"
と指定して、
ドキュメントパスでは、株価情報が記載されているExcelファイル(株主優待人気銘柄.xlsx)を選択します。

Excelからデータを読み込む

Excelを開いたら次はデータを読み込んでいきます。
1行ずつデータを繰り返し処理していきたいので、まず左側のアクションから
ループ > Loopをドラッグ&ドロップします。

pad_flow6.png

pad_flow7.png

株主優待人気銘柄.xlsxは1行目が表のラベルで、株式のデータは2行目から11行目に記載されています。
なので、ループは
開始値:2
終了:11
増分:1
とします。
この変数はLoopIndexとして格納されます。

次はLoopとEndの間に処理を追加していきます。

左側のアクションから
Excel > Excelワークシートから読み取りをドラッグ&ドロップします。

pad_flow8.png

pad_flow9.png

Excelインスタンスはすでに自動で選択されていますね。
取得では"単一セルの値"を選択します。
先頭列先頭行には、読み取りたいセルの行番号と列番号を入力します。
今回はB列のLoopIndex行を読み取りたいので、
列については、A列→1、B列→2、C列→3、…と変換して数字で入力します。
つまり、先頭列は"2" となりますね。
先頭行にはLoopIndexという変数を指定したいので、入力欄の右端の**{X}**というマークを押して、変数の中からLoopIndexを選択します。
ここで、読み取った値は変数ExcelDataに格納されます。

動作確認

では、このあたりで本当に銘柄コードを一行ずつ読み取れるのか確認してみましょう。

左側のアクションから
メッセージ ボックス > メッセージを表示をドラッグ&ドロップします。

pad_flow10.png
pad_flow11.png

メッセージボックスのタイトルは"銘柄コード"として、
表示するメッセージExcelDataという変数を指定します。
フローの上の方にある三角のマーク(「実行」ボタン)をクリックしてフローを動かしてみましょう。

きちんと動作しましたか?
表示が確認できたら、このメッセージを表示のアクションはジャマなので無効化しておきましょう。
メッセージの表示の上で右クリックをして"無効にする"を選択します。薄い灰色になったら無効化されています。

pad_flow12.png

Webの操作を自動化する

Excelから銘柄コードを取得できたので、次はこの銘柄コードで株価を検索します。
つまり、Webブラウザの操作を自動化していきます。

というサイトで銘柄コードを入力して結果を読み取っていきましょう。

Webブラウザを起動する

Chromeの場合、Power Automate Desktop拡張機能が必要らしいので事前にインストールしておきます。

左側のアクションから
Webオートメーション > 新しいChromeを起動するをドラッグ&ドロップします。
pad_flow13.png

新しいChromeを起動するの詳細設定画面では、
新しいインスタンスを起動するを選択して、
初期URLには先ほどのサイトのURL"https://minkabu.jp/stock"を入力します。
ウィンドウの状態はとりあえずここでは"最大化"にしておきます。

Webブラウザに入力する

次にサイトの「銘柄名、銘柄コードから株価を調べる」というところにExcelから取得した銘柄コードを入力して検索してみたいと思います。

pad_flow17.png

アクションから
Webオートメーション > Webフォーム入力 > Webページ内のテキストフィールドに入力するをドラッグ&ドロップします。
Excelで銘柄コードを読み取ったあとに検索するので、「Excelワークシートから読み取り」の下にドラッグ&ドロップしましょう。

pad_flow15.png
pad_flow16.png

詳細画面では、どこのフィールドに入力するかをUI要素で選択します。

UI要素の右端の下矢印のようなマークをクリックして、新しいUI要素の追加を選びます。
すると、追跡セッションというウィンドウが立ち上がります。

ここでWebページの各要素にマウスを当てると赤い枠がホバーします。
Ctrlキーを押しながら該当の要素をクリックするとその要素を認識して追加される仕組みです。

pad_flow17_2.png

ここでは目的の検索フィールドにマウスを合わせると<input:search>というWeb PageのUI要素として認識されます。
Ctrlキーを押しながらクリックしてUI要素として追加します。

pad_flow18.png

こんな感じでUI要素として追加されたらOKです。

ここで注意が必要というか、私がハマってしまった点です。

追跡セッションで目的の検索フィールドにマウスを合わせるとEditとなってしまうことがあります。
こうなってしまうと、Web PageのUI要素ではなく、通常のアプリケーションのテキスト入力の要素として認識されてしまうようでうまくいきません。
Webブラウザ内の要素がうまく認識されるときとされないときがあり、どう対処すればいいのか正確には不明です。
ブラウザを立ち上げ直したり、他の要素を選択させたりしていると、Web PageのUI要素をうまく認識してくれるようになります。
原理はよくわかりません。

UI要素がうまく認識されたら、次にテキストフィールドに入力したい文字列をテキストに入力します。
ここではExcelから読み取った銘柄コード(ExcelDataという変数)を入力したいので、それを入力して保存します。

Webのボタンをクリックする

同じ要領で次は、キーワード検索の横にある「検索」ボタンを押して検索を行います。
アクションから「Webページのリンクをクリックします」を選択します。

アクションから
Webオートメーション > Webフォーム入力 > Webページのボタンを押しますをドラッグ&ドロップします。

pad_flow21.png

UI要素では、先ほどと同じく追跡セッションを起動させて、サイト上の「検索ボタン」を認識させてCtrlを押しながら選択します。

Webから情報を読み取る

さて、ここで検索ボタンを押して検索結果が表示されたとして、どこから情報を読み取るかを考えます。

pad_flow24_2.png

  • 株価
  • 売りか買いか
  • 目標株価

あたりから情報を抜き出すことにしましょう。

アクションから
Webオートメーション > Webデータ抽出 > Webページからデータを抽出するをドラッグ&ドロップします。

pad_flow23.png

pad_flow24.png

「このダイアログが開いている間に、実際のWebブラウザーウィンドウをフォアグラウンドに表示すると、ライブWebヘルパーがアクティブ化されます。」
という一見よくわからないメッセージが書いてありますが、
要は今の状態でWebサイトを開くと、先ほどと同じような追跡セッション状態となっているわけです。
Webサイト上の要素にマウスカーソルを合わせると赤枠が表示されると思います。
ここで抽出したい要素にカーソルを合わせて右クリックします。
するとメニューが出てくるので要素の値を抽出 > テキストと選択します。

pad_flow25.png

pad_flow26.png

  • 株価
  • 売りか買いか
  • 目標株価

をそれぞれ読み取りましょう。

Excelにデータを入力

Webサイトから読み取った値をExcelに書き込んでいきましょう。

アクションから
Excel > Excelワークシートに書き込みをドラッグ&ドロップします。

pad_flow28.png
pad_flow29.png

書き込む値には先ほどWebサイトから読み取った値が格納されているDataFromWebPageという変数を選択します。

この変数はデータテーブルという二次元配列の形式になっています。
今回のケースであれば、抽出した値は3つあるので1行3列の形になっています。

二次元配列で特定の値を取り出したいときには、
DataFromWebPage[行番号][列番号]
の形で指定します。ただし、行番号、列番号は0から始まることに注意してください。

参考:変数のデータ型

DataFromWebPage[0][0]
をExcelのE列に書き込みたいので
列:5
行:LoopIndex
を選択します。

同様にして
DataFromWebPage[0][1]
をExcelのF列に書き込みたいので
列:6
行:LoopIndex

DataFromWebPage[0][2]
をExcelのG列に書き込みたいので
列:7
行:LoopIndex

とします。
ちなみにアクションはコピペできます。

Webページの操作

Excelに値を書き込んだら、Webページで元の検索画面に戻って、次の行に進みます。

アクションから
Webオートメーション > Webページに移動しますをドラッグ&ドロップします。

pad_flow31.png

pad_flow32.png

移動:戻る
を入力して保存します。

あとはこれをLoopで繰り返すだけですね。

すべてが終わったら、最後にブラウザを閉じて終了にします。
pad_flow34.png

これで完成です。
pad_flow35.png

このフローを実行すると、ちゃんとExcelに株価が追記されています。

pad_flow36.png

参考

私の書いた他の自動化シリーズはこちらです。ご興味があればどうぞ!

【自動化】PDF内の表をPythonで抜き出す
https://qiita.com/konitech913/items/4ef70e1f7753c824b40f

【自動化】PythonでOutlookの予定を抜き出す
https://qiita.com/konitech913/items/2ec831863ad84db23558

【自動化】Pythonでマウスとキーボードを操る
https://qiita.com/konitech913/items/301bb63c8a69c3fcb1bd

【自動化】PythonでWordの文書を読み取る
https://qiita.com/konitech913/items/c30236bdf47775535e2f

【自動化】Pythonコードをexeファイル化する
https://qiita.com/konitech913/items/6259f13e057bc25ebc23

【自動化】PythonでOutlookメールを送信する
https://qiita.com/konitech913/items/51867dbe24a2a4272bb6

【自動化】PythonでOutlookのメールを読み込む
https://qiita.com/konitech913/items/8a285522b0c118d5f905

【自動化】Pythonでメール(msgファイル)を読み込む
https://qiita.com/konitech913/items/fa0cf66aad27d16258c0

【自動化】Pythonでクリップボードを操作してExcelに表を貼り付ける
https://qiita.com/konitech913/items/83975332e395a387eace

16
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?