1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

英語ブログの更新通知を受け取る

Last updated at Posted at 2022-12-11

※この記事は RPACommunity Advent Calendar 2022 の12/1担当分です。

スライドは、Speaker Deckにあります。

この記事は、RPA COMMUNITY「【自動化やIT活用ネタ】ライトニングトーク大会 vol.6~初参加者大歓迎~」(2022/11/30)のLT内容をもとに作成しました。


やること

海外のブログを購読したいので、更新されたときにTwitterに通知してくれるといいな。英語がわからないわけじゃないけど、できれば、通知の内容は日本語に翻訳して、ある程度内容がわかるようになっていると、優先度が決めやすいんだけどな。
image.png

ということで、各種組み合わせて作ってみました。
image.png

データの取得

1. RSSトリガーを使う

 規模の大きなブログは、大抵 RSS という、ブログの更新情報を通知してくれる仕組みがあったりします。これを使えば、Power Automate のトリガーとして拾うことができます。
image.png
 個のトリガーを使って、Dataverseに書き込めがさっさと出来上がります。

2. RSSアクションを使う

 RSSアクションを使用すれば、定期的にブログの更新情報を取得することができます。決まった時間に動かしたい場合は、こちらを使います。
image.png

3. データフローを使う

 今回、データフローを使い方法を詳しく説明します。

 RSSが提供されていない場合、ブログの情報をいい感じに取り出してくれる データフロー を使います。データフローはETLツールなので、少々面倒な処理でもこなすことができます。
 データフローの処理を作成するには、 Power BI DesktopPower Query エディタ を使用すると簡単です。

 RSSが提供されているブログをデータフローで取得する場合。
image.png

 RSSが提供されていない場合は、「例を使用してテーブルを作成」でWebを表示させながら取得したいデータをいくつか書き込むと、いい感じに続きを補完してくれます。
image.png
 ただし、このままではデータフローで使えないので、 Web.BrowserContents関数Web.Contents 関数に変更します。(カッコ内の引数はそのままでOK!)
image.png

 Html.Table でCSSセレクタを使って取得していますので、M言語とCSSセレクタを勉強すれば詳細エディタで動作を書くことができます。
image.png

※参照:「Power QueryでCSSセレクタを使ってWebページからデータを取得する

 作成したクエリをPower Appsのデータフローに貼り付けます。
image.png
image.png

 貼り付けは Ctrl + v で行います。
 テーブルのマッピングを行って読み込みます。タイトルやリンクの項目は、ここでは複数行テキストにしていますが、1行テキストのほうが適しています。しかし、ここで新しいテーブルを作成して読み込むと最大100文字に設定されてしまい、読み込み時にエラーになることがあります。後で文字数を300程度に変更しなければなりません。
image.png
 出来上がったテーブルには、キーの作成と、日本語のタイトル、説明を入れる項目を追加しておきます。
image.png

翻訳

 タイトルと内容を日本語にするには、Power AutomateのTranslateアクションを使用します。
image.png
 本文の中にHTMLタグが混じっている場合は、Htmlからテキスト のアクションを追加します。また、改行をスペースに変更したい場合は、以下のような式を使います。

文章中の改行をスペースに変換
replace(body('Html_からテキスト'),decodeUriComponent('%0A'),' ')

ツイート

 先のフローに続いて、ツイートするアクションを追加します。
image.png
 説明文は、ツイッターの文字数制限があるので、切り詰める必要があり、私は以下のような関数を使っています。

slice(
    replace(
        body('Html_からテキスト'),
        decodeUriComponent('%0A'),
        ' '
    ), 
    0, 
    sub(
        110, // エラーになる場合は、この値を調整
        length(
            body('Translate_Title')
        )
    )
)

キャンバスアプリ

 Power Appsで、Dataverseに保存されたデータをギャラリーで表示してみます。私は、以下のようなものを作成しています。データフローでは、1つの処理の中で複数のソースをまとめることもできるので、Power Apps, Power Automate, Power BI, Power Virtual Agent, Excel のブログ情報を一括して登録しています。
image.png

公開

 このデータをPower Pagesで公開することもできます。
image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?