MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power Automateの裏側をみてみよう! (1/2)

Power Automateの裏側って?

今回はPower Automateのトリガー・アクションの裏側を見るという内容です。

『裏側』と言っているのは、普段見ているトリガーやアクションの設定を表として、コード表示や設定表示を指しています。

image.png

あまり詳細に解説されていないので、それぞれの意味や、どう使うのかを紹介したいと思います。 2回構成で、最初はPeak codeと、それに関連したトリガー・アクション入力・出力へのアクセス方法です。

そもそもどうやってこれを表示するのか

とにもかくにも、まずは・・・をクリックしましょう。そうすると、各トリガー・アクションのメニューが表示されます。 よく使うのは、Renameとか、Comment、あるいはConfigure run after (前のステップがどういうステータスで終了したときに実行するか)だと思います。 今回はそれ以外の、SettingsとPeak codeを見ていきます。

image.png

Peak code (コード表示)

コード表示といってもいわゆる"コード"ではなく、設定を記述するjsonです。 個別のjson (コード表示)は紹介できないので、活用方法など中心に。

アクションには必ずinput/inputsがあります。 ここに入力(表側)で指定された各種設定値や関数、また明示的に設定していないコネクションの情報や、データアクセスがある場合にはメソッドなどが記載されています。

image.png

もしこれらの情報に、外部のアクションからアクセスしたい場合には actions(action name)を利用します。

または、トリガーにおけるinput/inputsにアクセスする場合には、trigger() を利用します。

trigger/actionsの情報

実際に trigger() 出力してみると、以下のような構成になっています。(下図はSharePointのアイテム作成トリガー)

image.png

とてもたくさん文字が並んでいて、身構えてしまうのですが、大きくは

  • inputパート : Peak codeで表示した部分
  • outputパート
    • outputの本体 (body)

のように分解されます。それぞれの情報には、trigger() に続く情報として、

  • inputパート : trigger()?['inputs']
  • outputパート : trigger()?['outputs']
    • outputの本体 (body) : trigger()?['outputs']?['body']

という数式でデータ取得ができます。(より下部の構造には?['xxxx']でアクセス)

actions()も基本的には同じです。おおよそinput, output, bodyパートから構成されています。 情報にアクセスする場合には (アクションは1つではないので、名前の指定が必要で) actions('action name')?['inputs'] などの数式を利用します。

inputsの情報との対応

話を戻して、Peak codeで表示した内容にほかのアクションからアクセスする場合には、trigger()/actions() に続けて?['inputs']で情報取得してください。

個人的には、もっと有効なのは、数式の抽出です。 表側から数式のコピーをしようとすると、しばしばイライラすることがあります。コピーしたはずがされていないとか、フォーカスがはずれてしまうとか。 そういった場合には、Peak codeで対象の数式を表示して、コピーするのが有効です。特に複雑/長い数式です。

image.png

補足

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']等を積極的に活用していきますので、これは次回紹介します。