Windows10の無償デスクトップ自動化ツール「Power Automate Desktop」で取得したXMLから任意のデータを抽出する
Power Automate Desktopチュートリアル 第13回
ダウンロード サンプルファイル (1.5 KB)
抽出したXMLデータをExcelにまとめる
[3]Excelを起動する
[Excel]アクショングループの[Excelの起動]アクションを配置すると、設定ダイアログが開きます。特に設定すべき点はないので、そのまま保存します。
[4]書籍情報の抽出したい項目名のリストを作成する
XMLのitem要素の中身の抽出したい要素名のタグ名をリストにします。
[変数]アクショングループの[変数の設定]アクションを配置すると、設定ダイアログが開きます。
以下の設定を選択/入力し、保存します。
- 変数:%elementNames%
- 値:%['title', 'author', 'pubDate', 'date', 'publisher', 'price', 'link']%
[5]Excelシートに書籍情報の項目をヘッダーとして書き込む
項目名を結果の表の列名としてExcelシートの1行目に書き込みます。
[Excel]アクショングループの[Excelワークシートに書き込み]アクションを配置すると、設定ダイアログが開きます。
図:Excelワークシートに(要素名)書き込むアクションの設定
以下の設定を選択/入力し、保存します。
- 書き込む値:%{elementNames}%
- 列:1
- 行:1
[6]For eachでループする(検索結果を1件ずつ抽出する)
[ループ]アクショングループの[For each]アクションを配置すると、設定ダイアログが開きます。
以下の設定を選択/入力し、保存します。XPathResultsはXMLから取得したitem要素の集合です。
- 反復処理を行う値:%XPathResults%
[7]検索結果の1件をXMLとした変数を設定する
抽出した1件分のitem要素とその中身を独立したXMLドキュメントとして扱えるようにするために、XML宣言を先頭に付与します。
[変数]アクショングループの[変数の設定]アクションをFor each-Endの中に配置すると、設定ダイアログが開きます。
以下の設定を選択/入力し、保存します。
- 変数:%itemXML%
- 値:<?xml version="1.0" encoding="UTF-8"?>%CurrentItem%
[8]Excelシートの最初の空行の位置を取得する
[Excel]アクショングループの[Excelワークシートから最初の空の列や行を取得]アクションをFor each-Endの中に配置すると、設定ダイアログが開きます。特別な設定は不要なので、そのまま保存します。
[9]書籍情報1件の項目のループをする
抽出したい項目名のリストelementNamesをループします。
[ループ]アクショングループの[Loop]アクションをFor each-Endの中に配置すると、設定ダイアログが開きます。
以下の設定を選択/入力し、保存します。
- 開始値:0
- 終了:%elementNames.Count - 1%
- 増分:1
[10]項目名の変数を設定する
[変数]アクショングループの[変数の設定]アクションをLoop-Endの中に配置すると、設定ダイアログが開きます。
以下の設定を選択/入力し、保存します。
- 変数:%elementName%
- 値:%elementNames[LoopIndex]%
[11]抽出値用の変数を空に初期化する
次のアクションでXML要素が存在しない場合、値が上書きされず、もともと入っていた値がシートに書き込まれてしまいます。これを防止するために、あらかじめ空文字を設定しておきましょう。
[変数]アクショングループの[変数の設定]アクションをLoop-Endの中に配置すると、設定ダイアログが開きます。
以下の設定を選択/入力し、保存します。
- 変数:%XmlElementValue%
- 値:%''%
[12]XML要素の値を取得する(エラー時は次の処理に進む)
[XML]アクショングループの[XML要素の値を取得します]アクションをLoop-Endの中に配置すると、設定ダイアログが開きます。
以下の設定を選択/入力します。
- XMLドキュメント:%itemXML%
- XPathクエリ:/item/*[local-name()='%elementName%']
- 生成された変数:%XmlElementValue%(XmlElementValue変数が既にあるので、配置時%XmlElementValue2%となってしまいます、2を削除します)
XMLのタグには「名前空間:名前」という形式で表されているものがあります。ここでは名前だけで検索したいので、local-name()でタグの名前のみを取得しています。「*」はすべての要素、[]は条件を指定します。
また、[XML要素の値を取得します]アクションの設定ダイアログ左下の[エラー発生時]ボタンをクリックし、[すべてのエラー]で[フロー実行を続行する]をクリックして選択状態にしておきます。これでエラー時にもそのままフローを継続できます。
[13]Excelシートに取得した値を書き込む
[Excel]アクショングループの[Excelワークシートに書き込む]アクションをLoop-Endの中に配置すると、設定ダイアログが開きます。
以下の設定を選択/入力し、保存します。
- 書き込む値:%XmlElementValue%
- 列:%LoopIndex + 1%
- 行:%FirstFreeRow%
[14]Excelを保存する
[Excel]アクショングループの[Excelの保存]アクションをフローの末尾に配置すると、設定ダイアログが開きます。
以下の設定を選択/入力し、保存します。
- 保存モード:名前を付けてドキュメントを保存
- ドキュメント形式:Excelブック(.xlsx)
- ドキュメントパス:%NewFolder%\%Replaced%.xlsx
[15]Excelを閉じる
[Excel]アクショングループの[Excelを閉じる]アクションを配置すると、設定ダイアログが開きます。特別な設定は不要なので、そのまま保存します。
[16]フローを実行する
フローを保存して実行します。入力ダイアログではそのままで実行します(検索キーワード:Power Automate Desktop)。作成されたExcelブックを開くと、XMLから抽出したデータがシートに表として書き込まれているのが確認できます。
今回のフローは検索タイトルをユーザーに入力させるようになっていますが、これをファイルから読み込むようにすることで、より自動化らしいフローに改良することもできます。また、Excelシートの一つ一つに個々の値を書き出していますが、データテーブル変数に追加するなどして、Excelシートに書き出す/テキストファイル(csv,tsv)に保存する/DBに保存するなどの改良も考えられます。
まとめ
Power Automate for Desktopのフローから、XMLアクションでXMLの内容を解析して、欲しい情報を取得する方法を説明しました。Webサービスの結果などXMLがあった場合、XMLアクションを使用して一部を抽出したり、後続のフローで使用しやすい他のデータ形式(他のシステムやツールで読み込む、画面に表示する、など目的に応じた最適な形式)に変換することもできます。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- Power Automate Desktopチュートリアル連載記事一覧
- この記事の著者
-
WINGSプロジェクト 飯島 聡(WINGSプロジェクト イイジマ サトシ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、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本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
