メインフローを作成してサブフローを呼び出す
作成したサブフローを呼び出すフローを作成します。スクリーンショットを取得するサブフローなので、ここでは画面の変化がある第14回と第15回のフローから呼び出します。このサンプルはExcelブック「今月のカレンダー.xlsx」を開いた状態で、文字色や表示形式、セル色、枠線などを変更するフローでした。フローのそれぞれのステップからサブフローを呼び出し、実行の過程をスクリーンショットに記録していきます。
なお、このサンプルでは使用しませんでしたが、入出力変数に項目を追加して、外部名をメインフローの変数と同じ名前にすることで、メインフローと変数を共有することができます。
[1]メインフローのデザインに戻る
画面上部のツールバーの下のMainフロータブをクリックします。メイン/サブフローの切り替えはこのタブのクリックで行います。
[2]ドキュメントフォルダーを取得する(アクションを配置する)
[フォルダー]アクショングループから[特別なフォルダーを取得]アクションを配置します。
以下の入力/選択をして保存します。
- 特別なフォルダーの名前:ドキュメント
- 生成された変数:%Documents%
[生成された変数]は変数名をクリックすると編集状態になるので、これを変更してください。
[3]Excelの起動をする(アクションを配置する)
[Excel]アクショングループから[Excelの起動]アクションを配置します。
以下の入力/選択をして保存します。
- Excelの起動:次のドキュメントを開く
- ドキュメントパス:%Documents%\今月のカレンダー.xlsx
[4]Excelの操作をするフローをテキストファイルからコピーして貼り付ける
この後に、過去の連載記事のサンプルのテキストファイルの内容を貼り付けます。テキストエディタで[第14回 1.マウスでのUI操作フローを作成する.txt]を開き、[Ctrl]+[A]で全選択した後、[Ctrl]+[C]でクリップボードにコピーします。
Power Automate for Desktopのデザイン画面のMainフローに戻り、[Excelの起動]アクションの下の何もない部分をクリックします。[Ctrl]+[P]で貼り付けます。
フローが貼り付けられたら、同様にその下に[第15回 1.レコーダーでUI操作を記録する.txt]の内容をコピーして貼り付けます。続けてその下に[第15回 2.キーボード操作のフローを作成する.txt]の内容も貼り付けます。
[5]フローの終わりを分かりやすくする
フローの末尾に、フローが終了したことを分かりやすくする処理を入れます。
今回は、[メッセージ]アクショングループから[メッセージの表示]アクションを配置します。
以下の入力/選択をして保存します。
- 表示するメッセージ:完了しました。
[6]サブフローを呼び出す(アクションを配置する)
Mainフローの最初の部分を表示して、[フローコントロール]アクショングループから[サブフローの実行]アクションを[ウィンドウ状態の設定]アクションの次にドロップします。
以下の選択をして保存します。
- サブフロー名:ScreenShotFlow
[7]再度サブフローを呼び出す(アクションをコピーして貼り付ける)
配置した[サブフローの実行]アクションを選択して、[Ctrl]+[C]でコピーし、すぐに[Ctrl]+[P]を押すとすぐ下に貼り付けられます。貼り付けた[サブフローの実行]アクションをドラッグして、例えば[ウィンドウ内のテキストフィールドに入力する]アクションの下にドロップします。
この操作を繰り返して、画面が変化するアクションの後に、[サブフローの実行]アクションを任意のアクションの次に挿入していきます。
[サブフローの実行]アクションを複数箇所に挿入することをデザインの画面で行うことを説明しましたが、一旦フロー全体をテキストエディタにコピーして、挿入したい箇所に
CALL ScreenShotFlow
の行を貼り付けて挿入して、改めて全体をコピーして、デザインの画面に貼り付ける方が効率的にデザインできる場合もあります。
例えば、メインフローのすべてのアクション後で、この[サブフローの実行]アクションを入れたい場合に、手作業では大変だと感じる場合に、後述の補足に紹介する方法もあります。
[8]フローを実行する
フローを実行すると、Excel画面の操作が行われ、スクリーンショット画像が保存されていきます。フローが完了したら、ピクチャフォルダーのフォルダーを確認します。
[補足]
サブフローを使ったフローでは、Mainフローを全体をコピーしてもサブフローはコピーできないので、テキストファイルにフローを保存する場合は別々にコピーして保存、他のフローにも別々に貼り付ける必要があります。
また、サブフローをワークスペースからすべてを選択してコピーすると、以下のようなコードを得られます。
FUNCTION (サブフロー名) GLOBAL (内容) END FUNCTION
ただし、他のフローのワークスペースに貼り付けることができるのは「内容」の部分のみです。