Power Automateの裏側といっても制作現場とかではない
釣りタイトルっぽいですが、Power Automateのトリガー・アクションの裏側を見るという内容なので、嘘ではないはずです。。
『裏側』と言っているのは、普段見ているトリガーやアクションの設定を表として、コード表示や設定表示を指しています。
あまり詳細に解説されていないので、それぞれの意味や、どう使うのかを紹介したいと思います。
2回構成で、最初はPeak codeと、それに関連したトリガー・アクション入力・出力へのアクセス方法です。
そもそもどうやってこれを表示するのか
とにもかくにも、まずは・・・をクリックしましょう。そうすると、各トリガー・アクションのメニューが表示されます。
よく使うのは、Renameとか、Comment、あるいはConfigure run after (前のステップがどういうステータスで終了したときに実行するか)だと思います。
今回はそれ以外の、SettingsとPeak codeを見ていきます。
Peak code (コード表示)
コード表示といってもいわゆる"コード"ではなく、設定を記述するjsonです。
個別のjson (コード表示)は紹介できないので、活用方法など中心に。
アクションには必ずinput/inputsがあります。
ここに入力(表側)で指定された各種設定値や関数、また明示的に設定していないコネクションの情報や、データアクセスがある場合にはメソッドなどが記載されています。
もしこれらの情報に、外部のアクションからアクセスしたい場合には actions(action name)を利用します。
または、トリガーにおけるinput/inputsにアクセスする場合には、trigger() を利用します。
trigger/actionsの情報
実際に trigger()
出力してみると、以下のような構成になっています。(下図はSharePointのアイテム作成トリガー)
とてもたくさん文字が並んでいて、身構えてしまうのですが、大きくは
- inputパート : Peak codeで表示した部分
- outputパート
- outputの本体 (body)
のように分解されます。それぞれの情報には、trigger()
に続く情報として、
- inputパート :
trigger()?['inputs']
- outputパート :
trigger()?['outputs']
- outputの本体 (body) :
trigger()?['outputs']?['body']
- outputの本体 (body) :
という数式でデータ取得ができます。(より下部の構造には?['xxxx']でアクセス)
actions()
も基本的には同じです。おおよそinput, output, bodyパートから構成されています。
情報にアクセスする場合には (アクションは1つではないので、名前の指定が必要で) actions('action name')?['inputs']
などの数式を利用します。
inputsの情報との対応
話を戻して、Peak codeで表示した内容にほかのアクションからアクセスする場合には、trigger()/actions() に続けて?['inputs']
で情報取得してください。
個人的には、もっと有効なのは、数式の抽出です。
表側から数式のコピーをしようとすると、しばしばイライラすることがあります。コピーしたはずがされていないとか、フォーカスがはずれてしまうとか。
そういった場合には、Peak codeで対象の数式を表示して、コピーするのが有効です。特に複雑/長い数式です。
補足
trigger()の下部にあるoutputs, bodyは、なにも長いパスを書かなくても、triggerOutputs()
/ triggerBody()
という関数が用意されています。ですので、trigger()
から書き始めて取得するとすれば、それはinputsあるはstartTime,endTimeくらいかなと思います。
trigger()?['inputs']?...
trigger()?['startTime']
trigger()?['endTime']
基本的にはactions()
も同様ですが、outputs, bodyはもっと単純に outputs('action name')
/ body('action name')
で情報を取得できます。ですので、実際にactions()を利用するとすれば、inputs, startTime, endTime, そしてtrackedProperties くらいかと思います。
※口述するtrackedPropertiesではむしろ、このactions()?['inputs']...
を積極的に活用します。
Peak codeまとめ
Peak codeはトリガー・アクションの入力部分をjson形式で表示してくれる機能です。表示のみで、これを直接編集することはできませんが、ほかの数式バーに転用する場合など、数式のコピーにはうってつけです。
trigger()
, actions()
の関数を利用すると、トリガーおよび各アクションに関連する基本的な情報にアクセスできます。
通常はtriggerBody()
や、triggerOutputs()
あるいはbody(), outputs()
を利用するので、あまり直接記述することはありませんが、特にアクションのtracked Propertiesではactions()?['inputs']
等を積極的に活用していきますので、これは次回紹介します。