Microsoft Flow を使って特定のサイトページが更新されたかを検知し通知するワークフロー

Published: by

概要

Microsoft Flow を使って特定のサイトページが更新されたかを検知し通知するワークフローを作成する。

前提条件

Microsoft Flow の Premiumコネクタを利用します。 そのため、Freeライセンス相当のアカウントでは実現することはできませんのでご了承ください。

  • Common Data Service(以下CDS) コネクタ (Excel や SQL Server などでも代用可)
  • HTTP コネクタ

また基本的に取得できる値はページソースでとれる値になります。 こんな感じのやつ(view-source:https://www.google.co.jp/) ですので思っていた値が検知できない可能性もありますので、その場合は別な施策が必要です。 今回作成するワークフローは Microsoft Docs の特定のページが更新されたかどうかを検知し Tweet する仕組みです。

全体のワークフロー

今回は 2 つのワークフローを作成しています。

1つ目は ページを取得し比較するための Flow 2つ目は 検索するサイトページを登録する Flow となっています。 2つ目の Flow に関しては PowerApps や Excel などでも代用可能(データが登録できればいいだけなので)です。

ページを取得し比較するための image.png

検索するページを登録する Flow image.png

データソースの準備

今回のURLが保存されている CDS のエンティティはこのようになっています。 URLMsts image.png

ページDOMが保存されている CDS のエンティティです。 PageDoms image.png

ここはご自身の環境やデータソースに合わせて作成してください。 テキストのサイズはguid以外すべて上限値にしています。

1つ目のワークフロー ページを取得し比較するための Flow を作成する

トリガー 繰り返し

指定した時間間隔で自動的に実行するトリガーです。 今回は 6時間に 1 回と設定しています。 プラン次第で実行頻度(10分に1回とか5分に1回とか)は増やせますが、実行回数がバーストしやすいのでご注意ください。

image.png

アクション URL一覧を取得

CDS(データソース)に登録されている URLを一覧で取得してきます。

image.png

ここに関してはご自身のデータソースに合わせて設定を行ってください。

アクション 変数を初期化する

guid用の変数を初期化しています。 変数初期化の理由はこちらをご参照ください。 https://idea.tostring.jp/?p=4753&fbclid=IwAR0DqXFcQACtU46JXHzAieMdvtgbwQl9Ts1JV85KyZmJbzp7E6mWlxOFOO0

image.png

アクション HTTP

image.png

URL を指定すると勝手に Apply to each が作成されますが、そのままでかまいません。(配列になっている値を参照すると自動的に作成されます。)

アクション レコード一覧を表示

URLMsts に登録されている guid を使って PageDoms に登録されている最新の PageDom を取得します。

image.png

フィルタークエリの書き方

CDS の場合

名前 eq 値

とすることで指定カラム(名前)にした指定した値があるレコードの一覧だけが取得できます。 表示名ではなく名前を指定してください

並べ替え順

並べ替えたい名前

と指定することで昇順後ろに desc とつけることで降順になります。

並べ替えたい名前 desc

今回は CDS が自動的に作ってくれるカラムを利用し最新データが欲しいので降順にしています。

createdon desc

データソースが CDS ではない場合はそれに対応するカラムを作成してください。

上から順に取得する

前回との比較が欲しいだけなので 1 と指定します。 1レコードだけ取得できます。

アクション 変数の設定

image.png

guid()関数を利用します。

アクション 新しいレコードの作成

ここまでで取得できた値をデータソースに登録します。 image.png

アクション 条件

前回のページDomと今回のDomを比較します。

image.png

左の pagedom は レコード一覧を表示 で取得した値 右の pagedom は 新しいレコードの作成 で保存した値

条件が「いいえ」つまり何か変更があった場合に Tweet するようにアクションを追加して終了です。 もちろん Facebook や メール 、モバイル通知なんかでも同様に行ってください。

2つ目のワークフロー 検索するページを登録する Flow

image.png

レコードを PowerApps から受け取って登録しているだけです

テスト

それぞれ作成したワークフローを実際に動かしてみましょう。 まずは レコードの登録です。

image.png

実行ボタンを押してレコードを登録します。

image.png image.png

登録が完了したら、6時間ほど待つか、同じく1つ目のワークフローを実行してください。 後はページが変更されるのを静かに待ちましょう。

拡張アイディア

どこが変更されたかを検知する

結構面倒で、Flow で行うのは現実的ではない気がします。(テキストや値ならともかく、class名などが変更されてたら検知するのは至難)

2つ目のワークフローのトリガーを変更する

今回は PowerApps トリガーを利用していますが、例えば Forms にして、外部のユーザーでも登録できるようにするのも面白いかもしれません。

承認を追加する

2つ目のワークフローに承認機能を設ければ自分がいいと思ったページの更新だけを検知することができるようになります。

まとめ

HTTPコネクタはPremiumコネクタですが、それだけの利用価値はあると思います。 今回はサイト検知ですが、 API の変更なんかも検知できそうですね。