【Power Automateではじめる業務の完全自動化】実務直結のノウハウが満載! 本連載では、企業へのMicrosoft 365の導入や活用支援を手がける著者・太田浩史氏による、Power Automateを使った業務自動化のノウハウを提供します。

第5章|思い通りのフローを作成するための一歩進んだテクニック
LESSON 28

JSONの知識を生かして不要な反復処理を省く

複雑なフローを作成するようになると、増えてくるのが反復処理です。しかし場合によっては、その反復処理を少なくすることもできます。不要な反復処理を省くことでフローの構造がシンプルになり、あとから修正したりしやすくなります。

[Apply to each]を省きフローをシンプルにする

ここまでの知識を総動員すると、フローの中に挿入された不要な[Apply to each]の反復処理を省くことができます。例えば、第4章のLESSON 17で作成したフローでは、Excelファイルの中にあるテーブルを取得し、そのテーブルから行の値を取得しました。このとき、フローには[Apply to each 2]が自動的に挿入されました。しかしこの業務で利用するExcelファイルには、テーブルは必ず1つしか含まれないため、[Apply to each 2]は不要だと言えます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

利用しようとした動的なコンテンツがアレイの一部であるとき、フローには[Apply to each]が自動的に挿入されます。つまりこの場合は、取得したテーブルの情報がアレイになっています。このアレイから、1つの必要なテーブルの情報だけを取り出せれば、そのデータはアレイではなくなるため、[Apply to each]を省くことができます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

不要な反復処理を省くにはテーブルの「id」を取得

必要なテーブルの情報のみを取り出すには、[表内に存在する行を一覧表示]アクションの[テーブル]の設定に次の式を設定し、Excelファイルからテーブルの情報の「id」を取得します。

[表内に存在する行を一覧表示]アクション

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

なぜこの式でテーブルの情報の「id」が取得できるのかを理解するには、[テーブルの取得]アクションから出力される生データを確認します。生データを確認するには、フローの詳細画面から実行履歴を開き、[テーブルの取得]アクションの[出力]にある[未加工出力の表示]をクリックします。

ここで表示されたJSONの形式の生データと先ほどの式を比べてみましょう。「アクションの出力全体」の「body」の「value」の「0番の要素」の「id」と順に辿って値を取得している意味であると分かります。ここでのポイントは、でアレイから0番の要素を選択してアレイの外に取り出している点です。アレイから1つの情報だけを取り出せたため、この式を利用して[表内に存在する行を一覧表示]アクションを設定すれば、アレイでは必要であった[Apply to each]が不要になります。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

さらに上達!body関数でもテーブルのidを取得できる

JSONには「body」という名前の値が含まれる場合が多くあります。そうした場合には、body関数を利用することで、「body」の値を簡単に利用できます。また、アレイから0番の要素のみを取り出すには、first関数を利用することもできます。いずれの式でも結果は同じになるため、自分で見て分かりやすい書き方にしておきましょう。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

関数名 説明 利用例
body 「outputs(<アクション名>)?['body']」と同じ結果を返す body('項目の取得_2') (アクション名に半角スペースが含まれるときは、半角のアンダースコアに置換する)
>

ここもポイント!すべてのデータは[未加工出力の表示]で確認

トリガーやアクションが出力する生データは、[未加工出力の表示]で確認できます。これには、動的なコンテンツでは利用できない値も含まれています。生データのJSONを読み解き、式を使うことで、それらすべての値をフローで利用できます。ぜひ確かめてみてください。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

式でテーブル内の行の値を取得する

同様に[項目の作成]アクションでも式を利用することで、さらに[Apply to each 3]を不要にできます。先ほどと同様に実行履歴から今度は[表内に存在する行を一覧表示]アクションの未加工出力を確認してみましょう。ここでもアクションの出力をJSONの形式で確認できます。

アクションから出力されるJSON

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

このJSONからは、次のような式でテーブル内の行の値を取得できます。今回のフローは式を利用することで、2つの[Apply to each]を省くことができました。フローがシンプルで分かりやすくなることで、一目で処理の内容を把握できるようになり、あとから修正するときの手間も少なくなります。

[項目の作成]アクションに式を入力する

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

さらに上達! 動的なコンテンツがどんな式になっているか確認する

さまざまな式を書いてアクションが出力するJSON形式の値を利用してきましたが、これまでも利用してきた[動的なコンテンツ]も実は式で表されています。アクションの設定に指定された[動的なコンテンツ]の式を知りたいときは、設定の値を選択し[コピー]します。それをテキストエディターに貼り付けることで、式を確認できます。

貼り付けた文字列は次のようになっており、両端にある「@{}」を省くと見慣れた式の形になります。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

トリガーの出力を指すtriggerOutputs関数のあとに続く角括弧の中は、スラッシュ区切りで表記されています。これは、これまで紹介してきた表記方法の別表記です。つまり次の2つの式は同じ値を指しています。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

ここもポイント!動的なコンテンツはコピーできる

コピーした動的なコンテンツは、アクションのほかの設定項目に貼り付けることもできます。同じ[動的なコンテンツ]を複数の項目に設定したい場合には、この操作も覚えておくと便利です。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

達人のノウハウそのApply to eachは本当に不要だったか

このLESSONでは式やJSONの知識を使いながら、しばしばフローに登場する不要なApply to eachを省く方法を紹介しました。しかし、このように式やJSONを使いこなしたフローは、それが重荷になる場合もあります。それは、自分が作成したフローを、ほかの担当者に引継ぐときです。式やJSONを駆使して作成されたフローは、それを修正するためにもそれらの知識が必要です。引継いだ担当者にその知識がなければ、せっかく作成したフローが今後は使われなくなってしまう可能性もあります。こうした事態を回避するためにも、フロー作成の学習は一人で頑張るのではなく、普段から同僚と学んだ知識を共有し合いながら進められるのが理想です。

関連記事