自分の運用成果の記録として投資信託の評価額と評価損益を毎日記録しています。
証券会社で過去の含み損益を確認できたらいいのですが、できないので自分で記録するしかありません。
(私が見つけられないだけ?)
SBI証券をメインで使っているので、スマホかPCで評価額を確認しGoogleスプレッドシートに金額を入力しています。
これを自動化できましたので、自分の備忘記録を兼ねてご紹介します。
Google Apps Script(GAS)って?
エクセルでもいいのですが、自分はGoogleスプレッドシートで記録をつけているのでGoogleスプレッドシートで自動化しました。
エクセルにも「マクロ」と言われる作業を自動化する機能がありますが、Googleスプレッドシートも同じ機能があります。
Googleスプレッドシートの「マクロ」はGoogle Apps Script(GAS)というプログラム言語で動いていますので、このGASで自動化を行って行きます。
Google Apps ScriptはGoogleスプレッドシートだけじゃなく、Googleの提供しているサービス全般を自動化できますので、
- スプレッドシートの計算結果をGmailで送信する。
- 共有しているファイルに変更があったらメールで通知する。
とか、
また、Googleのサービスではないのですが、
ツイッターに自動で投稿ができるTwitterBotなんかもできるようです。
私もまだまだ勉強中ですが、GASを使いこなせればかなり便利でしょうね。
それでは、SBI証券へログインするコードを紹介します。
GASでSBI証券へログインするコード
サンプルコード
function SBI_LOGIN_TEST() {
//SBI証券にログインして、口座管理-口座(円建)-保有証券のデータを取得
var getUrl = 'https://site2.sbisec.co.jp/ETGate/';
var formData = {//パラメータを指定
'_PageID':'WPLETlgR001Rlgn20',
'_ControlID':'WPLETlgR001Control',
'_ActionID':'login',
'_ReturnPageInfo':'WPLETacR002Control/DefaultPID/DefaultAID/DSWPLETacR002Control',//口座管理-口座(円建)-保有証券の画面を指定している
'user_id':'ユーザーネーム',//実際のユーザーネームを入力
'user_password':'パスワード'//実際のパスワードを入力
};
var options = {
'method': 'post',
'payload' : formData
};
var content = UrlFetchApp.fetch(getUrl,options).getContentText('Shift_JIS');//SBI証券へアクセスしてデータを取得
console.log(content);//ログ表示
}
SBI証券へアクセスしてデータを取得しているのは下記のコード部分
var content = UrlFetchApp.fetch(getUrl,options).getContentText('Shift_JIS');//SBI証券へアクセスしてデータを取得
UrlFetchApp.fetch(getUrl,options)を使いSBI証券へログインを行い、getContentText('Shift_JIS')で表示されるWebページのテキストデータを取得しています。
取得したテキストデータが「content」へ代入されるので、「content」の中のデータを加工・抽出することで自動的に含み損益が記録できます。
console.log(content);//ログ表示
サンプルコードではログへの出力にしてますが、Googleドライブ内にデータ保存することもできます。
Googleドライブへ保存
Googleドライブに保存する場合はこんな感じ。
//取得したページデータをGoogleドライブに保存
var folder = DriveApp.getFolderById('フォルダID');//保存するフォルダ
var FileName = 'SBI_Login_Test.txt'//保存するファイルの名称
var contentType = 'text/plain';//ファイルの種類
var charset = 'Shift_JIS';//文字コード、SBI証券のデータはShift_JIS
var blob = Utilities.newBlob('',contentType,FileName).setDataFromString(content,charset);//保存ファイル書き出し
folder.createFile(blob);// ファイルを保存
フォルダIDは、
フォルダのURL「https://drive.google.com/drive/folders/11111111111111111」の
/folders/以下の「11111111111111111」部分をコピペしてください。
SBI証券の接続パラメータ
SBI証券へのアクセスする時のパラメータを指定しているのが下記のコード部分。
var formData = {
'_PageID':'WPLETlgR001Rlgn20',
'_ControlID':'WPLETlgR001Control',
'_ActionID':'login',
'_ReturnPageInfo':'WPLETacR002Control/DefaultPID/DefaultAID/DSWPLETacR002Control',//口座管理-口座(円建)-保有証券の画面を指定している
'user_id':'ユーザーネーム',//実際のユーザーネームを入力
'user_password':'パスワード'//実際のパスワードを入力
};
「_PageID」と「_ControlID」と「_ActionID」はこのままでないとログインできませんでした。
なので、このままにしてください。
「_ReturnPageInfo」はログインに表示されるページを表しているようです。
いろいろと試した結果、
- WPLETacR001Control/DefaultPID/DefaultAID/DSWPLETacR001Control
→口座管理-口座(円建)-口座サマリー - WPLETacR002Control/DefaultPID/DefaultAID/DSWPLETacR002Control
→口座管理-口座(円建)-保有証券 - WPLETacR003Control/DefaultPID/DefaultAID/DSWPLETacR003Control
→口座管理-口座(円建)-買付余力
でしたので、ここは表示させたいページを指定してください。
上記のサンプルコードでは、保有証券のページが一番情報が載っているので保有証券にしています。
最後にユーザーネームとパスワードはご自身のユーザーネームとパスワードを設定してください。
たとえば、ユーザーネームが「abc123」でパスワードが「456def」の場合、
'user_id':'abc123',//実際のユーザーネームを入力
'user_password':'456def'//実際のパスワードを入力
と指定してください。
最後に
GASでSBI証券にログインする方法を紹介しました。
アクセス用のパラメータはSBI証券のシステムを管理している方しか本当の意味はわかりません。
今のところ期待した通りのデータが取得できていますので、まあOK。
今後、HPのデザインとかSBI証券のシステムが変更されるとデータ取得できなくなる可能性もありますが、参考にしていただければ嬉しいです。
よりGASを学ぶならテックアカデミーがおすすめです。
まずは無料体験から。
コメント