SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

Power Automate Desktopチュートリアル

Windows10の無償デスクトップ自動化ツール「Power Automate Desktop」でファイルやフォルダーの操作を自動化する

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

ファイル情報の取得とデータテーブル変数

 Power Automate Desktopでは、フォルダーにあるファイルの一覧、既にあるファイルのファイルシステム上での属性を取得することもできます。

 ここでは、フォルダーのファイルの一覧をCSVに出力するサンプルを作成します。CSVは横方向にカンマ区切りの項目を並べたものを1行とする複数行で、行と列の構造を持った複数の値をテキストファイルで表現する形式です。

[1]新しいフローを作成します

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

[2]フォルダーの選択ダイアログを表示アクションを配置

 [メッセージボックス]アクショングループのフォルダー選択ダイアログを表示アクションを配置します。設定は初期のままで保存します。

フォルダー選択ダイアログを表示アクションを配置
フォルダー選択ダイアログを表示アクションを配置

[3]フォルダー内のファイルを取得する

 [フォルダー]アクショングループの[フォルダー内のファイルを取得]アクションを配置します。

フォルダー内のファイルを取得アクションを配置
フォルダー内のファイルを取得アクションを配置
フォルダー内のファイルを取得アクション設定
フォルダー内のファイルを取得アクションの設定

 アクションのパラメーター選択画面が開くので、[フォルダー]欄を「%SelectedFolder%」([2]で選択したフォルダー)として保存します。これで指定されたフォルダー配下にあるファイル群を格納したFiles変数が生成されます。

 なお、今回は設定を変更しませんが、[>詳細]を開くと、並べ替えのオプションがあり、Files変数の各要素のファイルを名前や最終変更日時などのキーでソートすることも可能です。

[Note]

 今回は使用しませんが、[フォルダー内のファイルを取得]アクションで取得したファイルのリストに対して、[ファイルの名前を変更する]アクションで、一括で連番を付けることもできます。

[4]フローを一度実行する

 ここで、ツールバーの実行ボタンをクリックして、フローを実行します。フォルダー選択ダイアログが表示されるので、先ほどのサンプルの実行で作成したデスクトップのフォルダーを選択します。

フォルダーの参照
フォルダーの参照

 実行が終わったらデザイナーに戻ります。デザイナー画面の変数ペインのFiles変数から右クリックし、表示されたコンテキストメニューから[表示]を選択すると、[変数の値]ダイアログを表示します。

変数ペインのFiles変数
変数ペインのFiles変数
Files変数の値
Files変数の値

 変数ペインで各変数の表示では、実行したときに代入された値が確認できます。変数名の変更や、使用箇所の確認もできます。

[5]ファイルの内容を確認する

 [変数の値]ダイアログで、いずれかの要素の[詳細表示]リンクをクリックします。全体が見えるように、ダイアログを広げます。

ファイル型変数のプロパティ
ファイル型変数のプロパティ

 Filesの各要素は、ファイル型であり、その各プロパティの値が確認できます。さらに、プロパティを持つような型のプロパティである場合[詳細表示]リンクが表示され、値を確認することができます。どのようなデータ型があって、それぞれがどのようなプロパティを持っているかは、ドキュメント「変数のデータ型 - Power Automate | Microsoft Docs」から確認してください。

 プロパティは、フローの中でも「変数名.プロパティ名」の形で、参照できます。

 変数の値ダイアログを閉じて、デザイナーに戻りましょう。

[Note]

 リスト型の変数は複数の値を持つことができます。縦もしくは横のいずれかひとつの方向に並んだ値が保持されるイメージです。これに対して、Excelでテーブルのように縦横両方2つの方向に並んだ値を保持することができるデータテーブル型もあります。

 リスト型の変数は作成や要素の追加のアクションが用意されていますが、データテーブルは現時点では直接操作するアクションは用意されていないようです。しかし、[Set Variable(変数の設定)]アクションで、新規に作成したり、既存の値を統合したりすることはできます。また、CSVファイル(後述)があればその内容を読み取りデータテーブル型変数として使用する[CSVを読み取ります]アクションや、Excelブックのシートから範囲のデータを読み取り、データテーブル型変数として使用する[Excelのワークシートから読み取り]アクションがあります。

[6]変数の作成でデータテーブル型の変数を作成する

 [フォルダー内のファイルを取得]アクションの下に、[Set Variable(変数の設定)]アクションを配置します。

Set Variableアクションの配置
Set Variableアクションの配置

 ここで作成する変数はFilesの各要素のプロパティの値の一覧を格納するデータテーブル型にしたいので、名前をFileTableとします。[設定](変数名)の右側のNewVarをクリックし、編集モードにして、%FileTable%とします。変数名がFileTableになります。

 [宛先]には、値を設定します。ここで、「%{[x1,x2,x3],[y1,y2,y3],[z1,z2,z3]}%」のように記述すると、1行目の1列目がx1、2列名がx2、3列名がx3、このとき、1行目が[x1,x2,x3]だということにすると、2行目が[y1,y2,y3]、3行目が[z1,z2,z3]となります。

データテーブル型の内容のイメージ
x1 x2 x3
y1 y2 y3
z1 z2 z3

 FileTable変数の1行目は各列の列名としたいので、以下のように入力して保存します。

%{['ファイル名', 'フルパス', '親フォルダー', '拡張子', 'サイズ', '作成日時', '更新日時'] }%

[7]Filesの要素を取り出すループを配置する

 次に[ループ]ー[For each]アクションを配置します。

For eachの配置
For eachの配置
For eachの設定
For eachの設定

 [反復処理を行う値]には「%Files%」と指定して保存します。これで、取得したファイル群をひとつずつ取り出して、CurrentItemループ変数で参照できるようになります。

[8]各行の値を作成する

 [For each]-[End]の内側に、[Set Variable(変数の設定)]アクションを配置します。

各行の値の変数の作成の配置
各行の値の変数の作成の配置
各行の値の変数の設定
各行の値の変数の設定

 [設定](変数名)でNewVarをクリックして編集モードにして%Row%と入力します。変数名がRowになります。

 [宛先](値)は現在行として、ファイル型のCurrentItem変数の各プロパティを参照するために、以下のようにしておきます。

%{[CurrentItem.Name, CurrentItem.FullName, CurrentItem.Directory, CurrentItem.Extension, CurrentItem.Size, CurrentItem.Directory.CreationTime, CurrentItem.LastModified] }%

 個々のプロパティの値を参照したい場合、{x}をクリックしてCurrentItem変数のツリーを展開し、プロパティをダブルクリックすることで、プロパティ参照を入力することもできます。ただし、参照したいプロパティが多い場合は、入力するかコピー&ペーストのほうが効率的に設定できます。

 入力できたら、設定を保存します。

[9]FileTable変数にRow変数を追加する

 [For each]-[End]の内側――前の手順の[Set Variable(変数の設定)]アクションのすぐあとに、再び別の[Set Variable(変数の設定)]アクションを配置します。

各行を追加のためのSet Variableアクションの配置
各行を追加のためのSet Variableアクションの配置
各行を追加のためのSet Variableアクションの設定
各行を追加のためのSet Variableアクションの設定

 [設定](変数名)の右側のNewVarをクリックして、編集モードにして、%FileTable%とします。これで、FileTableに値を上書きするアクションになります。

 [宛先](値)として「%FileTable + Row%」とすることで、現在のFileTable変数(データテーブル型)の値に、Row変数の値(現在行、データテーブル型)を追加して新たなFileTable変数の値を設定できます。ループの中で使用することで、現在行が追加されていき、変数の中で各ファイルのプロパティの値リストの表が作成されます。

[10]データテーブル変数の値をCSVファイルに保存する

 [For each]-[End]のあとに、[ファイル]アクショングループの[CSVファイルに書き込みます]アクションを配置します。

CSVファイルに書き込みますアクションの配置
CSVファイルに書き込みますアクションの配置
CSVファイルに書き込みますアクションの設定
CSVファイルに書き込みますアクションの設定

 アクションのパラメーター選択画面が開くので、以下のように値を設定&保存しておきましょう。

  • 書き込む変数:%FileTable%
  • ファイルパス:%SelectedFolder%\FileTable.csv
  • エンコード:UTF-8

 「\」は円記号キーで入力しますが、バックスラッシュで表示されることもあります。

[11]フォルダーを開くアクションを配置する

 [システム]アクショングループの[アプリケーションの実行]アクションを配置します。以下のように設定して、保存します。

  • アプリケーションパス:explorer
  • コマンドライン引数:%SelectedFolder%

 以上でフローの作成は終了なので、ツールバーの保存ボタンでフローを保存します。

[12]フローを実行する

 ツールバーの実行ボタンをクリックして、フローを実行します。フォルダー選択ダイアログが表示されるので「フォルダー/ファイルの作成」で作成したデスクトップのフォルダーを選択します。

 フローの実行が終わると、選択したフォルダーが表示され、FileTable.csvが作成されているはずなので、テキストエディターで開きます。

CSVファイルの内容確認
CSVファイルの内容確認

 選択したフォルダーにあるファイルのプロパティ値の一覧が、CSV形式で格納されているのが確認できます。

 [ファイル]アクショングループには、[CSVを読み取ります]アクションもあり、CSV形式でデータの格納されたテキストファイルがある場合、読み取ったデータをデータテーブル型の変数に代入してフローで使用できます。

まとめ

 デスクトップ上のファイル操作・フォルダー操作、ファイル情報取得、データテーブル型について説明しました。次回はフローでのExcelブック操作について説明します。

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

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
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編 」他、著書多数

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/15109 2021/11/15 11:00

イベント

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

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

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

メールバックナンバー