※この記事は プログラマがPower Automate for Desktopを使う シリーズの一つです。
フローの保守については (5)フローを安全に保つには に移しました
フロー作りの小技と雑学
フロー作成作業の効率を上げる手段とPower Automate for Desktopに関する予備知識を書きます。雑多な内容です。
小技
STOPメッセージ
メッセージを表示アクションを使うと、メッセージダイアログを出せます。私は「タイトルがSTOP、中身が空、メッセージボックスを常に手前に表示する」という単純なメッセージを使いました。
STOPメッセージをフローに挿入すると、フローデザイナーで実行中のフローをそこで止め、フローデザイナーにて停止することができます。この動きは、その場面でUI要素をピックしたりレコーダーでの記録を開始する目的で利用できます。
なお、ブレークポイントで停止する手段が元々用意されていますが、停止時にフローデザイナーをフォワードにしないと止まったかどうかが分からないため、不安になります。
WORKサブフロー
私は、名前がWORKで、平時は中身が空のサブフローを使いました。
フローを編集する際に、次の作業手順で利用します。
- 作成中のサブフローの、ステップ追加箇所に前述のSTOPメッセージを入れておき、そこまで実行し、フローを停止する。
- WORKサブフローで、手作業またはレコーダーにてステップを作る。
- WORKサブフローの先頭から「ここから実行」を使って、動作確認する。
- WORKサブフローの中身を切り取り&貼り付けで、作成中フローのSTOPメッセージの個所に移動する。
- 移動先で動作確認する。
- フローを保存する。
デバッグ用出力の手段
デバッグ用の出力のために次の手段を使ってみました。
- メッセージを表示アクションでメッセージボックスを出す。
- Webページのスクリーンショットを取得しますでブラウザ画面をクリップボードに貼り、ペイントを起動して貼り付ける。
- Webページの上の詳細を取得しますアクションで例えば「Webページテキスト」をクリップボードに貼り、メモ帳を起動して貼り付ける。
メッセージを表示アクションのメッセージボックスが、使い勝手が良かったです。1ステップで出力できます。メッセージボックスのサイズは内容で決まりるので、長いテキストでも大丈夫です。
デザイナーから起動するフローの入力変数の設定
入力変数があるフローをコンソールから起動した場合は、フローを呼び出す際に引数値を指定できます。しかしデザイナーから起動した場合は、入力変数の値を指定する手段がなく、フロー作成時に指定した規定値のままで走ってしまいます。
規定値のままでは困る場合は、次の方法で対処できます。
- 入力変数の規定値として空文字列(シングルクォート2つ)を指定しておく。
- フローの冒頭で、入力変数の値が空文字列だった場合は、入力ダイアログを表示してユーザに入力させる。
雑学
ちょっと一息
-
回帰する例題
Windows10の場合はPower Automate for Desktopを重要なことに時間をかけてその他のことは自動化しましょう。からダウンロードします。
提供される例題にある「Web ページを開く」というフローを動かすと重要なことに時間をかけてその他のことは自動化しましょう。が出てきます。 -
手はじめに
「hello,world!\n」と唱えるにはどうすれば良いでしょうか。
出力変数を作り、変数設定アクションで値として「『hello,world!』と改行」を入力して下さい。
名前の通用範囲
- フローの容器
Power Automate for Desktop(無償版)の場合、フローを置く場所は「ローカルコンピューター」だけです。
複数のフローをグループ化する手段はありません。代替法として、グループ化したい複数のフローの名前を「グループ名_識別名」の形にすると、見分けやすくなります。 - 変数の通用範囲
変数名の通用範囲はフロー全域です。
変数値の寿命はフロー全体です。設定前にも参照可能で、値は空(くう)です。サブフローで設定した値はサブフローを抜けても生き延びます。 - UI要素の通用範囲
UI要素ペインにある「階層構造」「括りの名前」「UI要素の名前」はフロー全域から見えます。ただしUI要素を参照できるのは、対象が表示されている場面です。 - サブフロー名の通用範囲
サブフロー名の通用範囲はフロー内の全域です。他のフローからは呼べません。 - フロー名の通用範囲
フロー名は全フローから見えます。1つのフローの名前を変更すると、呼び出し元にも波及します。
Power Automate for Desktopでは出来ないこと
フローまたはサブフローの名前に依らない呼び出し
例えば
フローAがフローBを呼び、フローBがフローC1またはフローC2を呼ぶ必要がある。
ただし、フローAがフローBを呼ぶ際に、フローBの引数でフローC1またはフローC2を指定したい。
という場合に、フローまたはサブフローを名前に依らず呼べると便利です。しかし
- Desktopフローを実行アクションで指定できるのはフロー名
- サブフローの実行アクションで指定できるはフロー内のサブフロー名
であり、変数を指定でません。ですから、名前に依らない呼び出しは、残念ながら出来ません。
Power Automate for Desktopの自動操作
例えば
- 1つのフローの全サブフローについて、内容をテキストファイルに保存する
目的で、フローでPower Automate for Desktopの自動操作ができれば便利ですが
- UI要素ピッカーでPower Automate for Desktopのコンソール画面を選べない
- UI要素ピッカーでPower Automate for Desktopのデザイナー画面を選べない
ため、Power Automate for Desktop操作の自動化は、残念ながら出来ません。