SHOEISHA iD

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

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

Power Automate Desktopチュートリアル

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

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


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

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

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

対象読者

  • 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小さいのです)。

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

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

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

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

メールバックナンバー

次のページ
途中でループを抜ける

修正履歴

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/14959 2021/11/01 12:13

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング