27
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-03-16

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

次回:Power Automateの裏側をみてみよう (2/2)

27
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?