Power Automateについて詳しく解説します
- Power Automate Desktopでどのようにしてヤフーファイナンスのデータを取得するのか?
- 株価情報を自動でExcelに取り込む方法はあるのか?
- 日本株と米国株のデータ処理を自動化するにはどうすればいいのか?
当記事では、上記の疑問にお答えします。
株式投資で重要な毎日の株価チェックですが、いちいち株価を見てExcelに記録するのは、正直面倒ではないでしょうか。
そこでオススメしたいのがPower Automate Desktop。
Power Automate Desktopを使えば、デスクトップ上の操作だけではなくWebスクレイピングも自動化できるため効率的な株価チェックが可能です。
当記事では、ヤフーファイナンスから日本株と米国株の株価を取得しExcelへの転記までを自動化するフローを解説します。
今回の記事を読めば、煩雑な株価チェック作業を自動化できるため、よりよい投資判断ができるでしょう。
ぜひ一度読んでみてください。
あわせて読みたい
目次
著:やまもとてつや
Tipstour初の電子書籍化! 37歳で初の正社員となりITヘルプデスクとして勤務中の著者が、Power Automate Desktopを使った8つのメール作業・自動化事例とその方法を本書でご紹介しています。 これを読めば、ヘルプデスクの担当者はもちろん、WindowsPCで作業するすべてのワーカーの面倒なメール作業を自動化可能です。 Kindle Unlimitedで読み放題対象! |
【方法】ヤフーファイナンスから国内外の株価をExcelに転記する方法
ヤフーファイナンスから国内外の株価をExcelに転記する方法を、以下の6ステップで解説します。
-
- 【ステップ①】Excelの下準備を行う
- 【ステップ②】LoopをつかってExcel行数分の繰り返し処理を作る
- 【ステップ③】Excelから株価コードと株の種類を取得する
- 【ステップ④】ifを使用して日本株と米国株とで処理を分ける
- 【ステップ⑤】If内の処理をサブフローを使って作成する
- 【ステップ⑥】Excelを閉じる
ポイントはステップ②とステップ④です。
また、下記のようなExcelファイルを用意しました。
ステップごとに詳細を解説します。
【ステップ①】Excelの下準備を行う
まずは、ExcelアクションからExcelを起動を中央にドラッグ&ドロップしましょう。
画面が変わったら、該当のExcelファイルを選択し保存します。
次にExcelワークシートから最初の空の列や行を取得をドラッグ&ドロップしてください。
変更画面が表示されたら、そのまま保存します。
上のアクションで取得した行数が、このあと設定するLoopアクションの繰り返し回数になります。
【ステップ②】LoopをつかってExcel行数分の繰り返し処理を作る
次にループアクションにあるLoopをドラッグ&ドロップします。
画面が変わったら、以下のように入力してください。
- 開始値:4
- 終了:%FirstFreeRow-1%
- 増分:1
開始値は4行目で、終了の%FirstFreeRow-1%は最初の空白行から1行上なので表の最終行になります。
株式投資では、常に同じ株式を購入するとは限りません。
全て売り払ったり、新たに購入したりするケースもあるでしょう。
売買の都度、表を更新する必要がありますがフローまで変えるのは面倒です。
本来、Loopは決められた回数分のみ処理を繰り返すアクションですが、終了の値を変数にすれば表を編集するだけで表にある会社の株価をすべて取得可能です。
【ステップ③】Excelから株価コードと株の種類を取得する
Loopアクション内の処理を作りましょう。
ExcelアクションにあるExcelワークシートから読み取るをドラッグ&ドロップしてください。
画面が変わったら、以下のように入力します。
- 先頭列:3
- 先頭行:%LoopIndex%
コードを取得する理由は、後でブラウザー自動化で開くヤフーファイナンスのURLを作成するためです。
保存したら、再度Excelワークシートから読み取るをドラッグ&ドロップし、先頭列を4に変更してください。
4列目には日本か米国を記載しており、それぞれの処理を変更するために使用します。
このとき、変数ExcelDataが生成されますが、わかりにくいので3列目と4列目をCodeとRegionに変更しました。
【ステップ④】ifを使用して日本株と米国株とで処理を分ける
ifを使って、日本株と米国株とで処理を分けましょう。
ヤフーファイナンスでは、日本株と米国株とでURLの構造が違います。
ヤフーファイナンスのURL構造の違い
- 日本株:https://finance.yahoo.co.jp/quote/株価コード.T
- 米国株:https://finance.yahoo.co.jp/quote/ティッカーコード
URLの構造が違うため、ステップ③でコードと日本か米国かを取得しました。
実際に処理を分けてみましょう。
条件アクションにあるIfを2つ目のExcelワークシートから読み取るの後にドラッグ&ドロップしてください。
画面が変わったら、以下のように入力して保存します。
- 最初のオペランド:%Region%
- 演算子:と等しい(=)
- 2番目のオペランド:日本
次に条件アクションにあるElseをIfとEndの間にドラッグ&ドロップしてください。
下記画像のようになっていればOKです。
【ステップ⑤】If内の処理をサブフローを使って作成する
それぞれの処理を作成する前に、サブフローとして処理をまとめておきましょう。
Power Automate Desktopの画面中央の上にあるサブフローをクリックし、新しいサブフローをクリックしてください。
画面が変わったら、好きな名前を入力して保存します。
今回は日本株としました。
新しいサブフローを作成すると画面が切り替わり、このままサブフローの処理を作成できます。
ブラウザー自動化アクションにある、新しいChromeを起動するをドラッグ&ドロップしてください。
画面が変わります。
初期URL欄に、以下のように入力して保存してください。
%Code%はステップ③で読み取ったコードです。
変数を文字列に挟み込んでURLを作成するため、Loopアクションで処理が繰り返される度に企業別のページを開き株価を取得できます。
ここからは、あらかじめ適当なヤフーファイナンスのページを開いてからフローを作成しましょう。
ブラウザー自動化アクション内のWebデータ抽出から、Webページ上の要素の詳細を取得しますをドラッグ&ドロップしてください。
画面が変わったら、下記画像の黄色枠をクリックします。
下に展開したら、UI要素の追加をクリックしてください。
下記のような画面が表示されたら、現在の株価にカーソルを合わせてCtrlキーを押しながら左クリックをします。
画面がもとに戻り、UI要素欄が埋まればOKです。
しかし、このままでは他のURLを開いた際にエラーが発生します。
取得した要素はHTMLのSpan要素ではあるものの、実際に取得したのはSpan内にあるText要素になります。
Webページ上の要素の詳細を取得しますで取得する属性をOwn Textとしているため、Text要素のTextを取得するという処理になっており論理的にNGです。
そこでUI要素を変更し、Span要素だけを取得するようにUI要素を変更しましょう。
下記画像の右側にある黄色枠をクリックします。
画面が変わったら、さきほど取得したSpanをダブルクリックしてください。
さらに画面が変わるので、一番下のSpanをクリックします。
クリックすると右側の属性にTextがあるのでチェックをOFFにして保存しましょう。
これでSpanタグだけを取得し、Spanタグ内のテキスト全てが対象となります。
生成された変数として、AttributeValueが生成されたのを確認しましょう。
次にExcelアクションにあるExcelワークシートに書き込むをドラッグ&ドロップしてください。
画面が変わったら、以下のように入力します。
- 書き込む値:%AttributeValue%
- 列:5
- 行:%LoopIndex%
書き込む値は先程取得した株価で、5列目の株価欄に書き込むようにしています。
株価を取得済みのページは必要ないので、ブラウザー自動化アクションのWebブラウザーを閉じるをドラッグ&ドロップしてください。
画面が変わったら、そのまま保存します。
ここまでで、日本株の処理できました。
あとは米国株ですが、実はほぼほぼ同じです。
サブフローを作成して、ここまでの処理を再度作成してください。
注意点としては、Chromeで開くURL欄が下記になるのと変数に2がつきます。
サブフローを2つ作成したら、Mainフローに戻りましょう。
フローコントロールアクションにあるサブフローを実行をIfとElseの間と、ElseとEndの間にそれぞれドラッグ&ドロップしてください。
画面が変わったら、IfとElseの間には日本株のサブフローを、ElseとEndの間には米国株のサブフローを選んで保存します。
【ステップ⑥】Excelを閉じる
最後にExcelを閉じれば完成です。
ExcelアクションのExcelを閉じるを一番最後にドラッグ&ドロップしてください。
画面が変わったら、保存します。
Excelを閉じる前をドキュメントを保存するにすればファイルを保存できるので、お好みで選択してください。
ここまでできたら、実際にフローを実行してみましょう。
ヤフーファイナンスから株価を取得できました!
今回のMainフローは下記になります。
日本株を取得するサブフローです。
米国株を取得するサブフローです。
AttributeValueとBrowserにそれぞれ2がついているので注意してください。
まとめ
以上、Power Automate Desktopでヤフーファイナンスから株価を取得する方法について解説しました。
一度、作成してしまえば半永久的に使用できるので、かなり汎用性のあるフローだと思います。
アレンジ次第では、FXや投資信託にも使用できるのでぜひ試してみてください。