自動で証券口座にログインして保有銘柄を取得しエクセルに転記する

スポンサーリンク

本日は、証券口座に自動ログインして保有銘柄の情報を取得してエクセルにその内容を記述します。ここではGMOクリック証券を例に紹介いたします。
それにはRPAツールのUiPath StudioXを使用します。コミュニティライセンスなので無料で使用できるようです。
それでは作業をしていきましょう。新規プロジェクトで空のタスクを選択します。デザイン画面で最初に行うことはアプリ/Web項目の「アプリケーション/ブラウザを使用」というリソースを左にあるアクティビティからドラッグしてくることです。

この目的はブラウザで証券会社へのログインを自動化することにあります。「自動化するアプリケーションを指定」をクリックしてログイン前のブラウザを選択します。ブラウザのログイン前の画面でIDとパスワードが必要なので、Studioでそれに対応するアクションを選択します。「文字を入力」がそれにあたります。

この時、ドラッグする位置ですが、先ほど作成したリソースの中です。「画面上でターゲットを指定」をクリックして、ブラウザ上のIDを入力するところを選択し確認ボタンをクリックしてStudioに戻ります。

パスワードのほうも同様にして作成します。IDやパスワードはStudio側で入力できます。ログインボタンをクリックする動作も自動化します。「クリック」というアクションがあるのでドラッグして追加しておきます。


うまく動作するか実行ボタンでテストしておきましょう。ここまでが証券会社に自動ログインする工程です。

次はログイン後のブラウザで保有銘柄があるページまで移動するタスクを作成していきます。口座内の保有銘柄はお見せするものではないですが、今回はジュニアNISA口座の株式を例に作業します。といっても「ジュニアNISA口座のお取引はこちら」というボタンをクリックすれば、通常の口座と同じ画面になります。このクリックする動作をStudio側で作成します。「クリック」アクションをここでも使用します。これを直前に作成したログインボタンをクリックするタスクの下にドラッグします。ここでも、「画面上でターゲットを指定」をクリックして目的のリンクを選択します。このようにして保有銘柄が表示されているページまでの道筋を作成していきます。

保有銘柄一覧のページでは、この内容をエクセルに転記するタスクを作成していきます。4銘柄保有している状態ですが、25件以上あることも想定するので全銘柄を1ページに表示するタスクを作成します。

Studioでは「項目を選択」というアクションでこれが可能になります。名前の通り、ブラウザのコンボボックスやリストボックスで項目を選ぶ時に対応したアクションです。

Studioでブラウザに対応した項目を選択できるので「全て」を選択しておきます。さらに「検索」ボタンをクリックして全銘柄表示するタスクも作成します。

いよいよ保有銘柄を取得する作業に移ります。最初は「テキストを取得」というアクションで株価コードを取得しようとしていたのですが、アンカーの設定があるなどして複雑でした。そこで試行錯誤した結果、「表データの抽出」を使用することにしました。

「画面上でターゲットを指定」をクリックすると、「table extraction wizard」が表示されます。

「Add Culumn」をクリックして、保有銘柄が表示されている付近をクリックします。ここではコード番号をクリックしました。すると、「表からすべての列を抽出しますか?」と出るので、「はい」を選択します。

列の情報を取得してくれるので、設定ボタンをクリックして内容を確認します。

株価コードと銘柄名の列の設定を見ると表示されるサンプルがコードと銘柄が2つあります。この2つが2段で表示されており、このままにしておくと、エクセルの1つのセルに2つの内容が入力されてしまい具合が悪いです。

そこで、formatの欄のTextをNumberにしてみました。これにより、株価コードだけを取得できるようになります。

他の列の設定も見て修正していきます。Culumn Nameも変更しないと、これがエクセルでタイトル行として取得されるので変更します。不要な列は削除します。取得単価も必要だったのですが、これは修正できなかったのでいったん削除して、後から別の方法を試します。


Studio側で抽出先を「後で使用するために保存」を選択します。これに名前を付けて保存します。


ブラウザでの作業とは別にエクセルも使用するので、ブラウザの時と同様にして「アプリケーション/ブラウザを使用」をドラッグします。このリソースはブラウザのタスクと切り離した位置にドラッグしておきます。

「自動化するアプリケーションを指定」をクリックする前に、空白のエクセルファイルを名前を付けて保存しておきます。その後にこの空白のエクセルを指定します。さらに、「エクセルファイルを使用」というリソースもドラッグしておきます。ドラッグする位置は、直前に作成したリソースの中にします。その後、エクセルファイルの欄に名前を付けて保存した空白のエクセルファイルを指定しておきます。

これでブラウザで取得した表のデータをエクセルに転記する準備が整いました。それを実現するために「範囲に書き込み」というアクションを追加します。書き込む内容はブラウザで取得した表データです。

「保存された値を使用」にこの内容があるので選択しておきます。表示先はエクセルの任意の場所を選ぶことができます。ここではA1にブラウザの表データを表示します。

貼り付ける表データを確認することもできます。それをするにはブラウザのタスクで作成した「表データの抽出」でテスト抽出を選択すると確認できます。

ただし、ブラウザでこれに対応したページにいないとエラーがでます。先ほどは表データの取得において取得単価をうまく修正できなかったので、このタスクの下に追加します。「テキストを取得」というアクションを追加します。

「画面上でターゲットを指定」をクリックしてブラウザ上の取得単価を選択します。

4銘柄あるので4回これを繰り返します。保存先は「 後で使用するために保存」 を選択し、わかりやすい名前を付けておきます。これらもエクセルに転記します。エクセルに転記された表データの右に転記しようと思います。「セルに書き込み」というアクションを表データを転記するアクションの下にドラッグします。

書き込む内容と書き込む場所も忘れずに記入します。書き込む場所はエクセルのD列にしました。これも4回繰り返します。多数保有銘柄があり、作業が困難な場合、それに対応するアクションがあるかもしれません。

ここまでの内容を実行ボタンでテストして確認します。取得単価に「円」が付いていて計算ができないので関数を使用して「円」を取り除きます。

=SUBSTITUTE(D2,"円","")

あとは、マーケットスピードのRSS関数を使用して損益などを出します。

タイトルとURLをコピーしました