はじめに - Feedとは
- RSS, Atomの総称。双方ともにBlogを始めとした記事、または更新情報などを配信するための文字規格
- 情報配信技術の総称として説明されることもある
- 「XML」(Extensible Markup Language)で構成されている
- Feedlyを始めとした情報収集アプリは、 RSSリーダーであり、RSSフィードを収集している。
参考
RSSフィードの活用方法
Power AutomateにRSSフィードの更新情報をキャッチするトリガーがあるため、
Teamsを中心としたアプリで、REST APIで情報収集の自動化が可能です
Botなどで活かされているのはこのテクニックであると想定されます
PULL型の情報収集(Atom Feed)
一方、コネクタがないAtom Feedの場合は、HTTP要求を送信することによって情報をキャッチできる
- ユーザーからHTTP要求を送ってフィードを取得する方法
- なおYouTubeの最新チャネルを取得する、といった場合にも応用可能
- コネクタが用意されていない場合に使える技術(YouTubeはコネクタが存在します)
今回は上記の記事を参考に、PULL型の情報収集をローコードで実践する方法をご紹介します。
1. XMLのリンクを調べる
👆の記事を参考にして展開すると、サイトによって.xmlといったURLが存在します!
今回は極めてわかりやすいサイトとして「Publickey」を紹介
上記がXMLを取得できるリンクです。
2. Power AutomateでHTTP要求を送信する
- シンプルにHTTP要求を
GET Method
で送信するとXMLが戻り値として返ってきます! - XMLの中から最新のFeedを取得する方法もあるが、Power Automateの
json関数
でJSON形式にデータを変更します- JSON形式にすることによって後続の作業が進めやすくなるため
- 筆者の感覚では 見やすい という点もポイント
推しポイント!
json関数でXMLが一瞬でJSON形式に変わる・・・
json関数大好きです🐟✨
3. JSONから最新の情報を抜き出す
JSONをで読み解くと、entry
が配列になっており、こちらのインデックス[0]のオブジェクトが、
最新記事と解釈できる👀✨
- より詳細に調べたい方は自分でやってみましょう!
json(body('XML_PULL'))?['feed']?['entry'][0]
配列のインデックスは0始まり!
{
"title": "Ruby30周年イベント(中編)~言語を「作りたい」と思ってから10年以上経って、スキルと環境が追いついてRubyを作ることができるようになった",
"link": {
"@rel": "alternate",
"@type": "text/html",
"@href": "https://www.publickey1.jp/blog/23/ruby3010ruby.html"
},
"id": "tag:www.publickey1.jp,2023://2.7104",
"published": "2023-03-01T16:21:41Z",
"updated": "2023-03-02T02:56:10Z",
"summary": "まつもとゆきひろ氏によって開発が始まったRuby言語の30周年を祝うイベント「プログラミング言語Ruby30周年記念イベント」が2月25日にオンラインで開催されました。 イベントでは関係者やRuby愛好家らによる過去30年の振り返りやRub...",
"author": {
"name": "jniino"
},
"category": [
{
"@term": "プログラミング言語",
"@scheme": "http://www.sixapart.com/ns/types#category"
},
{
"@term": "ruby",
"@label": "Ruby",
"@scheme": "http://www.sixapart.com/ns/types#tag"
}
],
"content": {
"@type": "html",
"@xml:lang": "ja",
"@xml:base": "https://www.publickey1.jp/",
"#text": "\n\nまつもとゆきひろ氏によって開発が始まったRuby言語の30周年を祝うイベント「プログラミング言語Ruby30周年記念イベント」が2月25日にオンラインで開催されました。 イベントでは関係者やRuby愛好家らによる過去30年の振り返りやRubyにまつわるライトニングトークなどが行われ、最後にまつもとゆきひろ氏による基調講演「D is for Dream, V for Vaporware」が行われました。 基調講演では、Rubyを開発する前にまつもと氏が手がけた、Rubyの原点と……\n\n "
}
}
ここから取得するデータを抜き出し、POSTする方法を組み立てて、情報収集ツールとして活かせます!
4. スケジュールされたトリガーで情報収集
PULL型の情報収集になるため、スケジュールされたトリガー で定期的にHTTP要求を送信する
URIを指定するだけの極めてシンプルな内容になります。
筆者の意見
より短いスパンでHTTP 要求を送信することもできますが、相手方の㏋のサーバー負荷の軽減と、
Power Automateの制限も考慮したスケジュールを考えましょう
5. 連続投稿を避けるために
スケジュールされたトリガーで実施することを考えると、同じ情報を連続して投稿してしまう可能性があります。
そのため、取得したフィードが配信済みか、未配信か判断することが必要になるでしょう。
ここでは使いやすいSharePointのListにて対処します。
- 最上段のレコードにタイトルと最新更新日時を格納しています。
- この値との一致・不一致でPOSTするか、どうかを判断する方法です!
SharePoint ListにURIを格納することで、
複数サイトからまとめて収集することもできますね!
JSON
のスキーマからpublished
に当たる部分が配信日付です。
投稿する際にpublished
が同じ値であれば配信済み情報と判断することが出来ます。
- 上記はあくまで一例です。Excelを始め、好きなものを使いましょう。
- 今回はPower Platformの相性の良さからSharePointを推します🐟✨
Title | latest_Date |
---|---|
feed title | publish datetime |
- 日付文字列で
yyyy-MM-DDThh:mm:ssZ
の形式で比較できる簡単さ・・・好きです🐟✨
具体的なフロー
- Recurrence
- HTTP 要求
- 戻り値のXMLを
json関数
で変換 - SharePointのレコードで配信済みの情報かどうか、条件分岐で確認する
- 条件分岐
- 配信済みの判断はレコードの「lastest」 = Jsonの「published」で判断、equelの場合は終了
- Not equelの場合は、アダプティブカードをデザインし、ポスト
- Imageは要求先のfaviconを利用
Teamsに表示される最新情報!
アダプティブカードでCoolに情報をストックできます!
最新情報を見逃さない👀✨!
取得された情報
VUCA時代、AIの新情報も一切見逃せません。
Teamsを中心に、組織や個人で情報収集感度を高める上でもオススメです。
またPostされたFeedを話題に、議論が始まり、新たなコラボレーションが生まれると良いですね。
Goodな情報収集ライフを!
以上が説明でした。
RSSフィードについては、情報を取得しやすいコネクタが既にあるので、そちらを活用しましょう。
お付き合いいただき、ありがとうございました!
楽しいPower Lifeを!