こんにちは。アーティサン株式会社の小刀稱(ことね)です。
「Power AutomateでExcelをSharePointリストにインポートしたい時に考えること」シリーズの第6回です。
本シリーズでは、私が実際にPower Automateを用いて、「ExcelをSharePointリストにインポートする」フローを作成していきます。
また、作成の際に学んだ点や躓いた点を中心に紹介いたします。
Power Automateでどんな事ができるのか知りたい、実際の作成方法を知りたい、という方に向けた記事です。
前回は、Microsoft Graph APIベースの「SharePoint REST V2.0」を使用して、 SharePointのドライブ一覧を動的に取得し、一覧から今回使用するドライブ情報をドライブ名で検索する手法についてお伝えしました。
第5回目の内容はこちらを参照ください。
Power AutomateでExcelデータをSharePointにインポートするために考えること(第5回)
今回は、「動的にExcelデータを取得する」方法の続きで、ExcelデータのファイルIDを動的に取得する方法についてお伝えしていきます!
Excelデータの動的な取得(ファイルID編) その2
ファイルIDを取得するには、以下の手順を実施していきます。
Excelデータが保存されたSharePointドキュメントライブラリのドライブIDを取得
ドライブ一覧を取得
ドライブ一覧から今回使用するドライブ情報をドライブ名で検索
対象のドライブIDを取得 ← 今回の対象
ExcelデータのファイルIDを取得
前回のブログでは、「ドライブ一覧から今回使用するドライブ情報をドライブ名で検索」までが完了しました。
今回は「対象のドライブIDを取得」についてお伝えします。
前回アレイのフィルター処理アクションで取得した”Excelファイルの保存場所”に関する情報は、以下のとおりです。
この中から「id」値(ハイライト部分)を抽出します。
「JSONの解析」アクションを使ってid値の取得を試したが・・・
私はまず以下の手順でid値を取得してみました。
JSONの解析アクションにてアレイのフィルター処理アクションのbody要素を解析
※「JSONの解析」アクションの設定方法については、前回のブログを御覧ください。
作成アクションを作成し、入力項目にアレイのフィルター処理アクションのid値を指定
すると自動的にApply to eachアクションで囲われました。
※「Apply to each」は配列の要素数だけループ処理を行うアクションです。
id値は1つしかないのに、なぜApply to eachアクションで囲われるのでしょうか。
それは、アレイのフィルター処理アクションで得た結果のbody要素が配列([ ~ ])になっているためです。
Power Automateでは、配列内の項目を取得する場合、自動的に「Apply to each」アクションで囲まれるようになっています。 しかし今回取得されるid値は1つであることが明確です。 このような場合、わざわざApply to eachアクションを行う必要はありません。
よって、不要なApply to eachアクションを回避するように設定しましょう。 回避が必要な理由については、本記事の最後で整理しますね。
「Apply to each」アクションを回避してid値を取得しよう
さて、先程とは方法を変えてid値の取得を試みたいと思います。 仕切り直しのため、さっき使ったJSONの解析アクションは削除してしまいます。
目標は”Apply to eachを回避しつつ、id値を取得”することです。 これを実現するための考え方としては、「アレイのフィルター処理」アクションで得た結果のbody要素のうち、先頭項目のid値を抽出するというものです。
上記で説明した考え方が少し分かりづらいので、順を追って説明していきます。
まず、アレイのフィルター処理アクションのbody要素は、以下の式によって取得できます。(上図(1)破線部分)
body(‘アレイのフィルター処理’)
さらに取得したbody要素(=配列)のうち、
( )内に上記のbody要素を挿入します。具体的には以下です。(上図(2)実線範囲)
first(body(‘アレイのフィルター処理’))
最後に、上記で取得した結果から、id値を抽出します。 具体的には以下です。(上図の(3))
first(body(‘アレイのフィルター処理’))[‘id’]
上記式を設定することで、作成アクションがApply to eachアクションで囲まれることを回避できました。
ドライブIDを取得する部分のフローは以下のとおりです。
ちなみに今回は、取得した要素のうち、先頭項目だけ取得するためにfirst()関数を用いました。
要素の0番目を取得するや要素の末尾項目を取得するでも同様の結果を得ることができます。
要素の0番目を取得する:body(‘アレイのフィルター処理’)[0][‘id’]
要素の末尾項目を取得する:last(body(‘アレイのフィルター処理’))[‘id’]
Apply to eachを回避すべき理由
最後に、なぜ不要なApply to eachを回避する必要があるのか考えてみましょう。
それは、以下2つの理由があります。
保守性の向上
フローの作成者以外がこのフローを見た際、「Apply to each」アクションがあると「ドライブIDは1つしか取得してないはずなのに、なんでループ処理をしているのかな?」と思われてしまいます。
他の人がメンテナンスすることを考えた場合、ミスリードしない設計にすることは重要です。
可読性の向上
執筆時時点(2021年8月)では、Power Automateの多重ループ数は最大8となっています。
また、「Apply to each」アクションは、配下のアクションを確認するために都度クリックする必要があります。 「Apply to each」アクションが多くなるとフロー全体の可読性が低下します。
流石に8重ループまで使用することはないと思いますが、不要なループは少しでも回避することで、 多重ループを防ぐことができるため、結果的にフロー全体の可読性向上に繋がります。
さて、今回の連載でドライブIDを取得するまでのフローが完成しました。
今回はここまで!
不要なApply to eachを回避する手法は、汎用的に活用できる内容ですので、是非覚えていただければと思います。
次回は、ExcelデータのファイルID・テーブルIDを動的に取得する方法についてお伝えします。
ここまで読んでいただき、ありがとうございました。
【このシリーズの過去回一覧】
-
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第1回】
4つのシーンごとに手法を比較、その最適解とは? -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第2回】
フロー作成でエラー発生! -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第3回】
フロー実行時のエラー内容と対処方法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第4回】
タイムゾーン差異と対処法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第5回】
ExcelファイルIDを動的取得 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第6回】
インポートするためのドライブIDを取得する方法 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第7回】
ファイルIDとテーブルIDを動的取得 -
【Power AutomateでExcelデータをSharePointにインポートするために考えること 第8回】
トリガーの条件の指定方法 -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第9回】
Excel表データの行数が多い場合の対処法 -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第10回】
インポートがうまくいかない!原因と対処法は? -
【Power AutomateでExcelをSharePointリストにインポートしたい時に考えること 第11回】
煩雑なフローをアクションで可読性向上!
【こちらも合わせて読みたい】
地方自治体ローコード導入・運用支援サービス(Power Apps・Power Automate)
Microsoft社が提供するローコード技術であるPower Platformを用いて、自治体様のDX化を支援します。
内製化支援サービス | Power Platform(Power Apps・Power Automate)
Power Platform(Power Apps・Power Automate)開発や運用をスムーズに内製できるよう支援いたします。
DX人材育成プログラム | Power Apps・Power Automte 教育
Microsoft社が提供するローコード技術であるPower Platformを用いて、社内のDX化を推進するための人材を育成いたします。
Power Apps/Power Automateアプリ開発・導入支援サービス
Microsoft社が提供するPower Apps / Power Automateの導入支援として、高度なアプリも最速で作れる業務アプリ作成支援サービスを提供いたします。
SharePointモダン化コンサルティングサービス
従来のSharePoint から移行・モダン化したい方に向けて、事前調査からサイト作成・活用支援までトータルなコンサルティング・技術支援を提供いたします。
小刀稱知哉
大分県出身(温泉大好き)、現在は東京都在住
1990年生まれ
30才でメーカーの技術営業からIT業界にジョブチェンジ!!!
趣味は読書
Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当しております!
持ってる資格はPL-200/PL-300/PL-400/MS-700/AZ-104/AZ-305