本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「株価を自動的に通知させてみた~PowerAutomate入門編~#PowerPlarformリレー」を再編集したものです。
目次
春ですね
FIXERに入社して4か月目、社会人歴6年目に突入しました堀です。
新年度が始まるこの時期になると初々しい新人の方々を見て、「自分にもあんな時期があったなー懐かしいなー」っていうほわほわした気持ちになります。その後に「自分何年目になったんだ?1年早っ!!」ってなんとも言えない気持ちになります。今日も四日市は風が気持ちいいですね。
何を自動化させるのか
いきなりですがみなさんは「株」を持っていますか??
最近は個人の方でも資産運用をしている時代になって、「自分で株を持っている」なんて人もかなり増えてきたかなと思います。少し余談ですが、株を保有することは経済の動向に関心を持ついいきっかけになると思っているのでどんどん身近になるといいなーと思っています。もちろんやりすぎは注意です!!
今回は決まった時間に自動的に株価をメールで通知してくれるという非常にシンプルな自動化ツールを作っていきます。わざわざアプリやブラウザにアクセスして株価をチェックするって頻繁にはしないですよね。でもランチタイムに自動的にメールが飛んできて、15秒でチェックできたらちょっとだけ便利かなーと思いました。
※なお、今回は株価を取得するために米Yahoo.comのFinance APIを利用します。このAPIは無料で使えますが、日本株の株価取得には対応していませんのであらかじめご了承ください。
実践
ここからは実際にMicrosoftのPowerAutomate(以下PA)で自動化ツールを作成していきたいと思います。
全体のおおまかな流れとしては以下のような形です。
①イベントが発火するタイミングを決定・変数を用意
②エクセル内にある企業データを取得
③企業データをもとにYahoo financeにアクセスして株価を取得
④Outlookで送信して完了
①イベントが発火するタイミングを決定、変数を用意
PAのサイトにアクセスしたら「作成」メニュー>「スケジュール済みクラウドフロー」というところから始めていきましょう。その後のフロー名は任意に決めて大丈夫です。「このフローを実行する」は、このフローを実行するタイミングを決定するフェーズです。たとえばお昼休みに見たいならば、実行タイミングを「12:00PM」として「1日」間隔で繰り返すなど、どんなタイミングで実行させるのかを任意に決めます。
続いて変数を初期化しておきます。今回は「メッセージ」変数を文字列型で設定しておきます。
②エクセル内にある企業データを取得
以下のような簡単なエクセルデータを作成しておきます。こちらは必ずエクセルの挿入メニュー>テーブルからテーブルデータとして作成し、「先頭行をテーブルの見出しとして使用する」にチェックを入れて、「Stocks」という見出しを付けてください。今回はMSFT(マイクロソフト)、AAPL(アップル)、FB(フェイスブック)、AMZN(アマゾン)、PFE(ファイザー)といった株式市場で社名を示すデータ(ティッカーシンボル)を用意しています。
作成出来たらPAのサイトにアクセスしてエクセルデータを取得させます。
ここまできたら一度、PAの画面右上にある「テスト」からプログラムを実行させてください。
実行履歴から該当のテストを選択→表内に存在する行を一覧表示から以下のようなデータを探してメモ帳等に張り付けておきましょう。
{
"@odata.etag":"",
"ItemInternalId":"xxxxxxxxxxxxxxxxxxxxxxxxxx",
"Stocks":"MSFT"
}
③企業データをもとにYahoo financeにアクセスして株価を取得
続いて以下のように「Apply to each」アクションの中に必要なアクションを選択していきます。「Apply to each」は繰り返し処理でエクセルデータの行一つ一つに対して処理を実行しています。次から一つ一つみていきましょう。
「JSONの解析」アクションを追加し、「サンプルから生成」をクリックして先ほどメモ帳に張り付けておいたサンプルデータからスキーマを自動作成します。解析結果がスキーマに入力されます。
次に最新の株価を取得するためにREST APIを呼び出すHTTPアクションを追加します。URIの中には、以下のURIをコピー&ペーストします。「@{body~}」の部分には動的コンテンツのStocks、つまりエクセルから取得したティッカーシンボルが入ります。
https://query1.finance.yahoo.com/v7/finance/chart/@{body('JSON_の解析')?['Stocks']}?interval=1h
ここで再度「JSONの解析」アクションを選択して、コンテンツに「本文」のパラメーターを入力します。
今回はスキーマに直接以下のデータを使用してください。(サンプルから生成ではない)
{
"type": "object",
"properties": {
"chart": {
"type": "object",
"properties": {
"result": {
"type": "array",
"items": {
"type": "object",
"properties": {
"meta": {
"type": "object",
"properties": {
"currency": {
"type": "string"
},
"symbol": {
"type": "string"
},
"regularMarketPrice": {
"type": "number"
}
}
}
}
}
}
}
}
}
}
次に「文字列変数に追加」アクションを選択します。以下のように作成しておきます。前に設定しておいた変数にOutlookで送信するためのデータを追加しています。(※図中の「regularMaker…」は「regularMarketPrice」です)
入力途中で「Apply to each」に自動的に囲まれますがそのまま次に進めて大丈夫です。
④Outlookで送信して完了
「メールの送信(V2)」アクションを選択してOutlookで任意のメールアドレス宛に送信して完了です。
実行すると、実行時点での株価を表示してくれる以下のようなメールが送られてきます。
最後に
今回はPowerAutomate入門編ということで自動化ツールを作成してみました。派手なことはできないけれどあったらちょっとだけ便利だなを形にできるのがPowerAutomateだと思っています。みなさんもめんどくさいなと思っていることがあれば一度RPAできないか考えてみてもいいかもしれません。それではっ!!!!
ざぶろー/FIXER
(ほり こうざぶろう)
楽しいを追及して!日々前進していきます!