こんな人のための投稿です
Power Automateクラウドフローの「HTMLテーブルの作成」は手軽だけれど、使ってみるとテーブルの中にHTMLのタグがあってもそのまま出てきてしまいます。
今回のテーマは、こいつの改善です。
RSSはとっても便利
Power Automateのクラウドフローには、「すべてのRSSフィード項目を一覧表示します」というアクションがあります。 RSSフィードのURLを入力するだけで、ニュース記事などを取得することができます。
たとえば、Googleニュースでは以下のように指定することで、特定のキーワードにマッチするニュース記事を取得できます。
https://news.google.com/rss/search?q=乃木坂48&hl=ja&gl=JP&ceid=JP:ja
上の例では「乃木坂48」と書かれている部分を、取得したいニュース記事のキーワードに変えてください。
この結果を「HTMLテーブルの作成」アクションに渡し、さらにその結果を「チャットまたはチャネルでメッセージを投稿する」アクションに渡してやります。 取得される記事が多すぎるとエラーが出ることがあるので、「以降」欄には次のような式をつかって過去24時間内に発行された記事以降のものだけが取得できるように調整しています。
addHours(utcNow(),-24)
これを実行すると、Teamsには以下のようなテーブルが投稿されます。
日本語ヘッダーにして項目もスッキリさせるには
列の数が多いことやヘッダーが英語なのを日本語にするには「選択」を挟めばOKです。
ついでに投稿日時はもともとUTC協定世界時なので、JST日本時間に変換するため以下のような式を使っています。 UTC時間からの変換について、詳しくはこちらのブログを参考にしてください。
ヘッダーが日本語になって、列も必要なものだけに絞ってすっきりしました。
テーブルの中のHTMLタグを解釈してくれない?
ところで、テーブルのなかで「サマリー」の中身を見ると、せっかくHTMLのaタグをつかって記事へのリンクが設定されているのにタグがそのまま表示されています。これはもったいない。
実行結果から「HTMLテーブルの作成」の出力結果を「未加工出力の表示」で表示させることができます。
テキストエディタに貼ってみると・・・タグの一部がエンコードされたままになっています。
こういうのをHTMLの文字実体参照といって、HTMLの意味あるタグでなくて文字として表示するように変換されたもののよう。
これを直接デコードする関数はないようなので、replace関数を使ってタグで使う文字に差し替えてみます。式はこんな感じ。
replace(replace(replace(body('HTML_テーブルの作成'), '<', '<'), '>', '>'), '&', '&')