【Power Automateではじめる業務の完全自動化】実務直結のノウハウが満載! 本連載では、企業へのMicrosoft 365の導入や活用支援を手がける著者・太田浩史氏による、Power Automateを使った業務自動化のノウハウを提供します。
JSONの知識を生かして不要な反復処理を省く
複雑なフローを作成するようになると、増えてくるのが反復処理です。しかし場合によっては、その反復処理を少なくすることもできます。不要な反復処理を省くことでフローの構造がシンプルになり、あとから修正したりしやすくなります。
[Apply to each]を省きフローをシンプルにする
ここまでの知識を総動員すると、フローの中に挿入された不要な[Apply to each]の反復処理を省くことができます。例えば、第4章のLESSON 17で作成したフローでは、Excelファイルの中にあるテーブルを取得し、そのテーブルから行の値を取得しました。このとき、フローには[Apply to each 2]が自動的に挿入されました。しかしこの業務で利用するExcelファイルには、テーブルは必ず1つしか含まれないため、[Apply to each 2]は不要だと言えます。
利用しようとした動的なコンテンツがアレイの一部であるとき、フローには[Apply to each]が自動的に挿入されます。つまりこの場合は、取得したテーブルの情報がアレイになっています。このアレイから、1つの必要なテーブルの情報だけを取り出せれば、そのデータはアレイではなくなるため、[Apply to each]を省くことができます。
不要な反復処理を省くにはテーブルの「id」を取得
必要なテーブルの情報のみを取り出すには、[表内に存在する行を一覧表示]アクションの[テーブル]の設定に次の式を設定し、Excelファイルからテーブルの情報の「id」を取得します。
[表内に存在する行を一覧表示]アクション
なぜこの式でテーブルの情報の「id」が取得できるのかを理解するには、[テーブルの取得]アクションから出力される生データを確認します。生データを確認するには、フローの詳細画面から実行履歴を開き、[テーブルの取得]アクションの[出力]にある[未加工出力の表示]をクリックします。
ここで表示されたJSONの形式の生データと先ほどの式を比べてみましょう。「❶アクションの出力全体」の「❷body」の「❸value」の「❹0番の要素」の「❺id」と順に辿って値を取得している意味であると分かります。ここでのポイントは、❹でアレイから0番の要素を選択してアレイの外に取り出している点です。アレイから1つの情報だけを取り出せたため、この式を利用して[表内に存在する行を一覧表示]アクションを設定すれば、アレイでは必要であった[Apply to each]が不要になります。
さらに上達!body関数でもテーブルのidを取得できる
ここもポイント!すべてのデータは[未加工出力の表示]で確認
式でテーブル内の行の値を取得する
同様に[項目の作成]アクションでも式を利用することで、さらに[Apply to each 3]を不要にできます。先ほどと同様に実行履歴から今度は[表内に存在する行を一覧表示]アクションの未加工出力を確認してみましょう。ここでもアクションの出力をJSONの形式で確認できます。
アクションから出力されるJSON
このJSONからは、次のような式でテーブル内の行の値を取得できます。今回のフローは式を利用することで、2つの[Apply to each]を省くことができました。フローがシンプルで分かりやすくなることで、一目で処理の内容を把握できるようになり、あとから修正するときの手間も少なくなります。
[項目の作成]アクションに式を入力する
さらに上達! 動的なコンテンツがどんな式になっているか確認する
さまざまな式を書いてアクションが出力するJSON形式の値を利用してきましたが、これまでも利用してきた[動的なコンテンツ]も実は式で表されています。アクションの設定に指定された[動的なコンテンツ]の式を知りたいときは、設定の値を選択し[コピー]します。それをテキストエディターに貼り付けることで、式を確認できます。
貼り付けた文字列は次のようになっており、両端にある「@{}」を省くと見慣れた式の形になります。
トリガーの出力を指すtriggerOutputs関数のあとに続く角括弧の中は、スラッシュ区切りで表記されています。これは、これまで紹介してきた表記方法の別表記です。つまり次の2つの式は同じ値を指しています。
ここもポイント!動的なコンテンツはコピーできる
達人のノウハウそのApply to eachは本当に不要だったか
このLESSONでは式やJSONの知識を使いながら、しばしばフローに登場する不要なApply to eachを省く方法を紹介しました。しかし、このように式やJSONを使いこなしたフローは、それが重荷になる場合もあります。それは、自分が作成したフローを、ほかの担当者に引継ぐときです。式やJSONを駆使して作成されたフローは、それを修正するためにもそれらの知識が必要です。引継いだ担当者にその知識がなければ、せっかく作成したフローが今後は使われなくなってしまう可能性もあります。こうした事態を回避するためにも、フロー作成の学習は一人で頑張るのではなく、普段から同僚と学んだ知識を共有し合いながら進められるのが理想です。
関連記事
本連載は、インプレスの書籍『Power Automateではじめる業務の完全自動化(できるエキスパート)』の内容に基づいています。紹介している情報は、書籍発行時点(2023年9月)のものです。