Power Automate for desktop 変数

公開日

変数シリーズ【第6回】入出力変数です。
フロー間で値の受け渡しができる、入力変数・出力変数を学びましょう。

変数シリーズ【第1~5回】の内容を踏まえて紹介しています。未読の方は、ぜひ第1回からご覧ください。

入出力変数とは?

入出力変数とは、クラウドフローや他のデスクトップフローと連携するときに、値の受け渡しをする変数のことです。呼び出す側のフローを親、呼び出される側を子と呼んだりします。子フローに入出力変数を作成することで、値の受け渡しができます。

入出力変数とフローの関係図
フロー同士の関係図

変数ペインの上部にあり、「何なのかな?」と思っていた方もおられるのでは。
ここに表示されるのが入出力変数です。ここで入力変数と出力変数を作成します。

変数ペインの上部に入出力変数欄
入力変数呼び出す側から受け取る値
出力変数呼び出す側へ渡す値

フロー変数と比較してみると

  • どちらも変数として同じようにアクションで使用できる
  • 変数の作成方法が異なる
  • 入出力変数は配置したアクションからは独立した存在

入出力変数を作ってみよう

【シナリオ】今日日付に「日数」(入力変数)を加算し、指定フォーマットの「日付のテキスト値」(出力変数)を返す

加算する日数の数値を入れる入力変数 AddDays と、成形した日付を入れる出力変数 FormattedDate を作りましょう。設定内容は、下図を参照してください。
+マーク > 入力 もしくは 出力 を選択し、各項目の設定を入力します。ひとつ作成した後、+マークは入出力変数欄の右上に表示されます。

+ボタンから入力か出力かを選択
入力 / 出力を選択
入力変数の設定項目
入力変数の設定値
出力変数の設定項目
出力変数の設定値
項目名説明
変数名フロー変数と同じ 命名ルール(リンク)で名付ける
データの種類テキスト、数値、ブール値、リスト、データテーブル、
カスタムオブジェクト(項目名と値のセット {'Name':Value})
既定値(入力変数のみ)任意の値を設定できる
外部名上部変数名と同じでも構わない
コンソールからフローを呼び出すときに、クラウド フロー デザイナー
およびフロー入力ダイアログに表示される名前
説明使用時に表示される変数の説明、自由記述
機密情報としてマークオン:機密とし値を表示しない・ログにも残さない
任意としてマーク
(入力変数のみ)
オン:入力必須にしない(テキストで未入力の場合「空白」となる)
オフ:入力必須にする

入力変数 AddDays 、出力変数 FormattedDate ができたでしょうか。
よく見ると入力変数はグレーで、出力変数は白く枠線がくっきりしていて、見分けできるようになっています。が、変数名をダブルクリックして設定画面を開けば「入力 / 出力変数を編集する」と上部に書いてありますので覚えなくても大丈夫です。

入力変数と出力変数は見た目に違いあり

入出力変数が作成できたので、今回のシナリオに必要なアクションを3つ追加します。ひとつめは、現在の日時を取得 アクションです。
ふたつめは、加算する日時 アクションです。加算に、入力変数 AddDays を選択します。

加算に入力変数AddDaysを選択

みっつめは、datetimeをテキストに変換 アクションです。加算する日時でできたResultedDateを元に、カスタム形式 yyyy-MM-dd とします。
そして生成された変数を{x}ボタンを押して、出力変数 FormattedDate に変更します。

生成された変数を出力変数FormattedDateにする

作成されるフロー変数がCurrentDateTime と ResultedDate の2つのみでしたら、上手く出力変数に値が入るように設定できました。

アクションを配置し、フロー変数が2つ作成された

※今回は入出力変数をどちらもひとつずつ使っていますが、もちろん片方ずつでも複数個でも使用できます

入出力変数を持つフローを単独で実行してみる

デザイナー(編集)画面で実行

デザイナー画面でのテスト実行では外部から値を受け取らないため、入力変数は既定値を使用して実行します。
AddDaysは既定値 0 としたため、今日日付 + 0日 のyyyy-MM-dd 形式の日付がFormattedDateに入ります。AddDaysを変えてテストするには既定値を変更してください。

コンソール(一覧)画面で実行

コンソール画面から実行した場合は、入力用のポップアップに既定値が表示されるので、値を設定・変更できます。
また、実行後には出力変数もポップアップで表示されるため値を確認することができます。
※表示されるAdd Days と Formatted Date は変数名ではなく、外部名になります。

入力変数の入力用ポップアップ
実行開始直後、入力変数への値入力ポップアップが表示される
出力変数の表示用ポップアップ
実行完了時、出力変数の値がポップアップに表示される

入出力変数を持つフローを単独で実行するとポップアップが表示されますが、親フローから呼び出す場合は表示されません。
また、単独実行時に表示されるこのポップアップを活用して、メッセージボックスの代わりに、べた書きしたくないパスワードや、都度変わる値を処理に使用できます。

他のデスクトップフローと値を受け渡ししてみる

新たに別のフローを作成し、Desktopフローを実行 アクションを配置し、先ほど作成したフローを選択します。
すると、入力変数に Add Days(外部名として設定した値)が表示されます。入力欄の左側に型がアイコンで、iマークで設定した説明が表示され、どんな値を入力すればよいか分かるようになっていますね。
また、生成された変数には出力変数で設定した変数名+末尾に2などが付きます(変数名が重複しないように+1されるようです)。そして説明も表示されています。

Desktopフローを実行アクションに表示される入出力変数

Add Daysには、変数でもべた書きの固定値でもどちらでも設定可能です。10など、なんらかの数値を設定しましょう。
生成された変数(上図の例ではFormattedDate2)はここでは単なるフロー変数となり、通常通り必要に応じて変数名は変更可能です。出力変数の変数名と同じにする必要はありません。

呼び出し側のフローをデザイナー画面で実行すると、返ってきた値が変数ペインで確認できます。

他のフローから呼び出した結果をデザイナー画面のフロー変数で確認
Add Daysにそれぞれ5日後と10日後をセットしてみた例

他のデスクトップフローと連携していても、上記の単独で実行する方法は使えます。

使いどころは?【部品化】

クラウドフローと連携する場合は、デスクトップフローだからできる処理を行うため、棲み分けがわかりやすいですね。
処理結果や、特定の値をやりとりするために入出力変数が活躍します。

ではデスクトップフロー同士の場合は、どういう場合に変数の値を受け渡してまでフローを分けるのでしょうか?

今回作成した例のように、いくつかの値を受け渡すだけで使える部品としてのフローを作る場合が考えられます。
例えば、エラーや処理結果の通知メール。フロー名やエラー内容を渡せば、複数のフローから呼び出せる汎用的な作りにできます。

フローを運用してみて必要を感じたら、別フローに分けて値を渡せることを思い出してください。
同じような処理を行うことも多いですし、使いまわせれば作るのもテスト作業も時短になります。

使用上の注意点

テキストで取得できない

入出力変数をテキストとしてコピーする方法がありません。
画面真ん中のスペースにあるアクション群をコピーしてメモ帳などに貼り付けて保存・共有し、新たなフローに貼り付けても、入出力変数は作成されません。貼り付けた先のフロー側で改めて作成が必要です。
これがフロー変数との違いで、配置したアクションで入出力変数を使用していても、あくまでこれらの変数は独立した存在です。

このため、無償ライセンス内でフローを共有したい場合、入出力変数が大量にあると作成・移行・管理をする上では手間がかかると思われます。
事前によく検討した上でご利用ください。

フロー変数とのマージ

フロー変数と同名の入出力変数を作成すると、マージするかの確認メッセージが表示されます。続行するとフロー変数は消え、入出力変数にマージすることができます。

変数名は既に使用されていますのメッセージ

入力変数の場合、子フローの始まりの時点で値を受け取ることになります。その後同じ変数名で値をセットすると上書きされますので、それでも本当に大丈夫なのかなど、マージする前に該当変数に関する処理をよく確認した上でマージを行ってください。


入出力変数を活用してフローを共有部品にできると、フロー作りも効率化できます。
どんなフローを作っているかを社内で共有して、使えるものは共通化して使いまわせるといいですね。

変数の基礎はこれで一通りご紹介しました。
ここまで変数シリーズを読んでくださった方は、だいぶ変数について慣れてきたのではないでしょうか。どんどん使って試して使いこなしていきましょう。