HTML解析して通知系も3本目です。
今回はとある商品価格比較サイトで、目的とする商品の現在価格を定期通知してくれるFlowをご紹介します。
参考:https://qiita.com/h-nagao/items/fdbfcf4a7dae6373a224
準備
データ保存場所
SharePointに商品名と、そのURL、購入の判断基準額(criteria)、そして現在の最安値(currentPrice)を含むリストを用意しておきます。
Urlがハイパーリンク列、criteriaとcurrentPriceは数値型です。
解析対象
商品のページのHTMLを見てみると、今回も非常にやさしい形で現在の最安値が表示されていました。
<span class="priceTxt">...
の部分です。
Videoの更新通知の時と同じ要領で、価格の文字列を抜き出してあげます。
int(replace(split(split(body('HTTP'),'<span class="priceTxt">¥')?[1],'</span>')?[0],',',''))
最初のsplitは、上に書いているでの分割です。円マークは**&yen;で指定しないといけません。
2個目のsplitは、の閉じ部分、での分割です。ここまでの2回splitで150,956という文字列が取得できました。
あとはreplace**関数で、1000の位のカンマを取り除いて、最後にintで整数にします。
Flowの全体
コアな処理は上記の、現在の最安値取得で完了しています。
あとはリストに保存している現在値や基準額との差をとって通知を行いましょう。
今回はリストのアイテムの最初だけを使うので、以下のような引き算をしています。
※実際には複数アイテムを確認すると思いますので、その時はループの変数を使ってください。
int(sub(variables('lowestprice'),body('Get_items')?['value']?[0]?['criteria'])) #これで基準との差額計算
int(sub(variables('lowestprice'),body('Get_items')?['value']?[0]?['currentPrice'])) #これで前回との差額計算
「最初のアイテムだけ使っている」というのは、**body('Get_items')?['value']?[0]**に表れています。
これで完了です。
実際に動かすと、このような感じで通知がきます。
基準額を達成したら即ぽちりましょう!
おわり
HTMLを解析していろんな生活の役にたつ通知を自分でつくることができます。
とにかくとりたい値の前後でsplitしてみることからはじめましょう!少しHTMLを見る必要はありますが、慣れればすいすいと行くと思います。
なお、HTTPアクションはほかのアクションで置き換えることも可能です。
以下のリンク先を参考にしてみてください。
https://qiita.com/h-nagao/items/65f498d9d4e4f1a5fa50