CodeZine(コードジン)

特集ページ一覧

Windows10の無償デスクトップ自動化ツール「Power Automate Desktop」のループアクションを利用する

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

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2021/10/19 11:00

 Power Automate Desktopは、自動化可能な作業の流れ(フロー)をデザインし、実行するためのソフトウェアです。第2回では、Power Automate Desktopでの条件分岐を組み込んだフローの作成を行いました。第3回では、繰り返し(ループ)の制御構造を組み込んだフローのデザインを行います。ほとんど同じ部分フローを複数回実行したい場合に、ループの制御構造を導入することで、そのループ対象の部分フローをまとめるて、一つのフローとして表すことができます。

目次

対象読者

  • Excel/PowerPointなど、一般的なツールの操作を理解している人
  • RPAツールを用いて業務を自動化したい人

ループ処理とは

 ループ処理では、[ループ]アクショングループのアクションを使用することで「決められた回数」「特定の条件を満たす間」など特定の条件を満たす間だけ、処理を繰り返すことができます。

 例えば、一つのフォルダに入っているファイルに対して一つひとつ同じ処理を行いたい場合、同じフローをそれぞれのファイルに対して書いていると、ファイル名がフローで参照したものと異なる場合やファイル数の増減によって、適用が漏れてしまったり、ファイルが見つからずエラーが発生してしまったりすることがあります。また、処理対象が大量にある場合、同じフローを個別に書くよりも一つだけ書く方が明らかにフロー作成の生産性も上がります。個別に同じフローを複数書いていると、フロー自体に要件変更や問題があって修正する時、すべてを修正しなければなりません。

アクションを繰り返し実行する、ループ処理の実装方法

 「Loop」アクションは、LoopIndexという変数が指定した範囲にある間内部に配置したフローを繰り返し実行します。

 ここでは、第2回の条件分岐で作成したフローを編集し、ファイルの内容を行単位に出力してみましょう。前回のフローとフローで利用しているテキストファイルについては、前回の記事を参照してください。

[1]ファイルの内容をリストに保存する

 [ファイルからテキストを読み取ります]アクションのパラメーター選択画面を開き、[内容の保存方法]を[リスト(それぞれがリストアイテム)]に変更して、[保存]ボタンをクリックします。

リストに変更
リストに変更

 リストとは、複数の値を一つの変数で持てる変数の型で、インデックス番号を付与して要素を参照します。これによって、読み取ったファイルの内容が行ごとに分割されて、リストとして変数FileContentsに格納されます。FileContentsの各要素には、変数名[番号]の形式でアクセスできます。例えばFileContents[0]が1行目、FileContents[1]が2行目、FileContents[n-1]がn行目を意味します(1行目はインデックス番号0で表される点に注意です)。

[2][Loop]アクションを配置する

 [ループ]-[Loop]アクションを、ワークスペースの[ファイルからテキストを読み取ります]と[メッセージを表示]の間に、ドロップします。

Loopの配置
Loopの配置
Loopの設定
Loopの設定

 [Loop]アクションのパラメーター選択画面が開くので、以下の表のように設定してください。

[Loop]アクションのパラメーター設定
項目 設定値
開始値 0
終了 2
増分 1
ループ
ループ

 Loop-Endの中に配置したフローが繰り返し実行されます。その中のアクションでループを識別する変数[LoopIndex]を使用できます。最初のループ時は、[開始値]に設定した値(この例では0)が入っています。Loop-EndのEndまで実行されると、Loopのところに制御が戻り、変数[LoopIndex]の中身が、[LoopIndex]の現在の値+増分に設定した値で更新されます(最初の更新では1)。この値が[終了値](ここでは2)を超えていなければ、再び中に配置したフローの実行が繰り返されます。[終了値]を超えている場合には、中の処理を実行せずLoop-Endの後続のフローに制御が移ります。

[3]繰り返し実行するアクションをループに配置する

 [メッセージを表示]アクションを右クリックし、表示されたコンテキストメニューから[上に移動]を選択、[Loop]~[End]の配下に移動します。

アクションをループに配置
アクションをループに配置

[4]メッセージを修正する

 [メッセージを表示]アクションのパラメーター選択画面を開き、[表示するメッセージ]を[%FileContents[LoopIndex]%]に変更して、[保存]ボタンをクリックします。これによって、ループインデックス(ループの周回)に応じて、対応する行の内容が表示されるようになります。

アクションでループインデックスを使う
アクションでループインデックスを使う

[5]フローを実行する

 再びフローを実行してみましょう。テキストファイルを選択すると、ファイルの内容が1行ずつメッセージボックスに表示されます。

行ごとにテキストを表示する
行ごとにテキストを表示する

 現時点では[終了]に2を設定しているので、3行目までしか実行されません。すべての行に対して、処理を実行するためには、[Loop]アクションのパラメーター選択画面の[終了]に「%FileContents.Count - 1%」と設定してください。

 FileContents.CountはFileContentsの要素数です。これでファイルの行数が変化しても、それに応じて終了値も変化します(「-1」しているのは、インデックス番号が0はじまりだからです。よって、終了のインデックス番号も実際の行数より1小さいのです)。

要素数に依存した終了値を設定する
要素数に依存した終了値を設定する

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

修正履歴

  • 2021/11/01 12:13 サンプルファイルを追加いたしました。

  • 2021/11/01 12:13 3ページ目、「[1][For each]アクションを配置する」の1行目に誤りがあったため、修正いたしました。正しくは「[For]アクション」ではなく「[Loop]アクション」でした。

バックナンバー

連載:Power Automate Desktopチュートリアル

著者プロフィール

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

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

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5