SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Power Automate Desktopチュートリアル

Windows10の無償デスクトップ自動化ツール「Power Automate Desktop」で取得したXMLから任意のデータを抽出する

Power Automate Desktopチュートリアル 第13回

  • このエントリーをはてなブックマークに追加

 Power Automate for Desktopは、自動化可能な作業の流れ(フロー)をデザインし、実行するためのソフトウェアです。第12回では、Webサービスの呼び出しアクションでXMLを取得するサンプルフローを説明しました。第13回では、取得したXMLファイルからXML関連アクションを使用して、データを取り出すサンプルフローを説明します。

  • このエントリーをはてなブックマークに追加

 [注意] 今回はPower Automate Desktopの作業しているPCにExcelがインストールされていることを前提としています。

 また、前回取得したXMLを使用しますので、ファイル内容などは第12回を参照してください。

XMLからデータを抽出する

 XMLデータの取得を確認できたところで、ここからはXMLデータから必要な情報を取り出し、Excelシートにまとめてみましょう。

[1]新しいフローを作成して前回のフローをコピーする

 Power Automate for Desktopのトップ画面から[+新しいフロー]をクリックして、適当な名前で新規のフローを作成します。

 第12回のサンプルをダウンロードして、テキストエディターですべてを選択してコピー、作成したフローのワークスペースにペーストします。

図:Webサービスを呼び出しXMLを取得するフロー
図:Webサービスを呼び出しXMLを取得するフロー

[2]XPath式でXMLデータを読み込む

 XMLのツリー構造は、XPath式を用いることで読み取ることが可能です。[XML]アクショングループの[XPath式を実行します]アクションを配置すると、設定ダイアログが開きます。

図:XPath式を実行しますアクションの配置
図:XPath式を実行しますアクションの配置
図:XPath式を実行しますアクションの設定
図:XPath式を実行しますアクションの設定

 以下の設定を選択/入力し、保存します。

  • 解析するXMLドキュメント:%WebServiceResponse%
  • XPathクエリ:rss/channel/item

 WebServiceResponseは、HTTP経由で取得したXMLデータそのものを表す変数です。rss/channel/itemで、rss-channel要素配下のitem要素をすべて取得します。この結果は、XPathResults変数に反映されます。

[Note]XPathについて

 XPath(XML Path Language)は、XMLの特定の要素・属性(1個~複数個)を指定する構文です。同様なツリー構造であるファイルシステムにおけるファイルパスと似ています。「親要素/子要素」のように子要素を指定すると、「rss/channel/item」はrss要素の子要素channelの子要素itemのすべてにマッチします。[XPath式を実行します]アクションの本文の指定では、以下の複数組の<item>~</item>を抽出できます。

 以下に、XPath式の最低限の構文を示します。

<rss version="2.0" ...>
  <channel>
	<item>
	</item>
	<item>
	</item>
	... ...
  </channel>
</rss>
  • 先頭の「/」はXMLドキュメントのトップレベルノードを表します。
  • 要素名の代わりに「*」を指定すると、任意の要素名のノードすべての意味になります。
  • 「要素名[条件式]」で、条件式を満たすノードのみ抽出できます。条件式の部分では、XPath関数を使用できます。
  • 要素、属性名を指定した場合には、その要素/属性が存在するかを判定します

 例えば、条件式を応用して「rss/channel/item」を「rss/channel/item[pubDate]」と変更すると、子要素として<pubDate>をもつ<item>要素のみを抽出することができます。

 また、後のアクション設定の箇所で、

/item/*[local-name()='xxxx']

という式を指定しています。

 XMLドキュメントの「要素名」は「:」が含まれるものがあります(例えば<dcndl:price>)。「:」の前と後ろで「(名前空間):(ローカル名)」に分かれます。local-name()はノードのローカル名を取得するXPath関数です。トップレベルのitem要素のすべての子要素のうち、ローカル名が「xxxx」になるものを取得するという意味になります。

 詳細は、以下のページや、検索サイトでキーワード「XPath」で検索した結果のページなどを参照してください。

 「XML Path Language (XPath) 3.1

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
抽出したXMLデータをExcelにまとめる

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Power Automate Desktopチュートリアル連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 飯島 聡(WINGSプロジェクト イイジマ サトシ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16326 2022/09/08 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング