1 min to read
Microsoft Flow を使って特定のサイトページが更新されたかを検知し通知するワークフロー
概要
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 などでも代用可能(データが登録できればいいだけなので)です。
ページを取得し比較するための
検索するページを登録する Flow
データソースの準備
今回のURLが保存されている CDS のエンティティはこのようになっています。 URLMsts
ページDOMが保存されている CDS のエンティティです。 PageDoms
ここはご自身の環境やデータソースに合わせて作成してください。 テキストのサイズはguid以外すべて上限値にしています。
1つ目のワークフロー ページを取得し比較するための Flow を作成する
トリガー 繰り返し
指定した時間間隔で自動的に実行するトリガーです。 今回は 6時間に 1 回と設定しています。 プラン次第で実行頻度(10分に1回とか5分に1回とか)は増やせますが、実行回数がバーストしやすいのでご注意ください。
アクション URL一覧を取得
CDS(データソース)に登録されている URLを一覧で取得してきます。
ここに関してはご自身のデータソースに合わせて設定を行ってください。
アクション 変数を初期化する
guid用の変数を初期化しています。 変数初期化の理由はこちらをご参照ください。 https://idea.tostring.jp/?p=4753&fbclid=IwAR0DqXFcQACtU46JXHzAieMdvtgbwQl9Ts1JV85KyZmJbzp7E6mWlxOFOO0
アクション HTTP
URL を指定すると勝手に Apply to each が作成されますが、そのままでかまいません。(配列になっている値を参照すると自動的に作成されます。)
アクション レコード一覧を表示
URLMsts に登録されている guid を使って PageDoms に登録されている最新の PageDom を取得します。
フィルタークエリの書き方
CDS の場合
名前 eq 値
とすることで指定カラム(名前)にした指定した値があるレコードの一覧だけが取得できます。 表示名ではなく名前を指定してください
並べ替え順
並べ替えたい名前
と指定することで昇順後ろに desc とつけることで降順になります。
並べ替えたい名前 desc
今回は CDS が自動的に作ってくれるカラムを利用し最新データが欲しいので降順にしています。
createdon desc
データソースが CDS ではない場合はそれに対応するカラムを作成してください。
上から順に取得する
前回との比較が欲しいだけなので 1 と指定します。 1レコードだけ取得できます。
アクション 変数の設定
guid()関数を利用します。
アクション 新しいレコードの作成
ここまでで取得できた値をデータソースに登録します。
アクション 条件
前回のページDomと今回のDomを比較します。
左の pagedom は レコード一覧を表示 で取得した値 右の pagedom は 新しいレコードの作成 で保存した値
条件が「いいえ」つまり何か変更があった場合に Tweet するようにアクションを追加して終了です。 もちろん Facebook や メール 、モバイル通知なんかでも同様に行ってください。
2つ目のワークフロー 検索するページを登録する Flow
レコードを PowerApps から受け取って登録しているだけです
テスト
それぞれ作成したワークフローを実際に動かしてみましょう。 まずは レコードの登録です。
実行ボタンを押してレコードを登録します。
登録が完了したら、6時間ほど待つか、同じく1つ目のワークフローを実行してください。 後はページが変更されるのを静かに待ちましょう。
拡張アイディア
どこが変更されたかを検知する
結構面倒で、Flow で行うのは現実的ではない気がします。(テキストや値ならともかく、class名などが変更されてたら検知するのは至難)
2つ目のワークフローのトリガーを変更する
今回は PowerApps トリガーを利用していますが、例えば Forms にして、外部のユーザーでも登録できるようにするのも面白いかもしれません。
承認を追加する
2つ目のワークフローに承認機能を設ければ自分がいいと思ったページの更新だけを検知することができるようになります。
まとめ
HTTPコネクタはPremiumコネクタですが、それだけの利用価値はあると思います。 今回はサイト検知ですが、 API の変更なんかも検知できそうですね。
Comments