技術情報ブログ
SharePoint
2021.08.20

Power Automate で Excel を SharePoint に取り込む:ファイルID を動的に取得し Apply to each を回避する方法(第6回)

Power Automate で Excel を SharePoint に取り込む:ファイルID を動的に取得し Apply to each を回避する方法(第6回)
小刀稱知哉

こんにちは。アーティサン株式会社の小刀稱(ことね)です。

この記事は Power Automate を使ってExcel のデータを SharePoint リストへ反映する際に必要なファイルID の動的取得および、フロー内で 不要な「Apply to each」ループを回避する方法について解説しています。本記事はシリーズ第6回で、実装手順や躓きやすいポイントにフォーカスしています。

Power Automate による Excel → SharePoint インポートの実装支援はこちらから。
現行フローの改善点や Apply to each 回避、ID 取得の最適化についてテクニカルサポートを提供します。

「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値を指定

    ファイル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要素(=配列)のうち、先頭項目だけ取得するには、first()関数を用います。
( )内に上記のbody要素を挿入します。具体的には以下です。(上図(2)実線範囲)

first(body(‘アレイのフィルター処理’))

最後に、上記で取得した結果から、id値を抽出します。
具体的には以下です。(上図の(3))

first(body(‘アレイのフィルター処理’))[‘id’]

上記式を設定することで、作成アクションがApply to eachアクションで囲まれることを回避できました。

Apply to eachの回避

ドライブIDを取得する部分のフローは以下のとおりです。

ドライブIDを取得する部分のフロー

ちなみに今回は、取得した要素のうち、先頭項目だけ取得するためにfirst()関数を用いました。
要素の0番目を取得する要素の末尾項目を取得するでも同様の結果を得ることができます。

要素の0番目を取得する:body(‘アレイのフィルター処理’)[0][‘id’]

要素の末尾項目を取得する:last(body(‘アレイのフィルター処理’))[‘id’]

Apply to eachを回避すべき理由

最後に、なぜ不要なApply to eachを回避する必要があるのか考えてみましょう。

それは、以下2つの理由があります。

  • 保守性の向上

    フローの作成者以外がこのフローを見た際、「Apply to each」アクションがあると「ドライブIDは1つしか取得してないはずなのに、なんでループ処理をしているのかな?」と思われてしまいます。

    他の人がメンテナンスすることを考えた場合、ミスリードしない設計にすることは重要です。

  • 可読性の向上

    <p”>執筆時時点(2021年8月)では、Power Automateの多重ループ数は最大8となっています。

    また、「Apply to each」アクションは、配下のアクションを確認するために都度クリックする必要があります。 「Apply to each」アクションが多くなるとフロー全体の可読性が低下します。

    流石に8重ループまで使用することはないと思いますが、不要なループは少しでも回避することで、 多重ループを防ぐことができるため、結果的にフロー全体の可読性向上に繋がります。

さて、今回の連載でドライブIDを取得するまでのフローが完成しました。

今回はここまで!

不要なApply to eachを回避する手法は、汎用的に活用できる内容ですので、是非覚えていただければと思います。

次回は、ExcelデータのファイルID・テーブルIDを動的に取得する方法についてお伝えします。

ここまで読んでいただき、ありがとうございました。

本記事の方法を実装済みですか?
次はフローの可読性向上やエラー対処のステップについてご相談ください。
Power Platform 内製化支援も可能です。

この記事を書いた人
小刀稱知哉

小刀稱 知哉ことね ともや

SharePoint Power Platform全般 Copilot Studio 技術アドバイス・教育支援

Power PlatformやSharePointを中心に設計・開発・アドバイス・教育まで幅広く担当しています。内製化をご希望の場合はお気軽にお問い合わせください!

2025 Microsoft MVP(Power Apps・Power Automate)
PL-200 PL-300 PL-400 PL-600 MS-700 AZ-104 AZ-305 SC-200 SC-100

Microsoftクラウド関連

シェアする
記事カテゴリ
最新記事
2026.04.22

ソリューション内で異動・退職者のPower Apps/Power Automateなどを引き継ぐには?所有者変更の手順と注意点を解説

2026.04.15

SharePoint:『リンクのコピー』は危険?権限トラブルを防ぐ推奨運用を解説

2026.04.08

技術ブログ100本書いてみたら、想像以上に得るものがあった話

2026.04.01

社内に聞く人がいない「孤独なDX」を解決!アーティサンの内製化支援サービス

2026.03.25

SharePointの便利なURLパラメータ活用術|ヘッダー削除・リスト絞り込み・メンテナンスモード

attributeO/Rマッパーマーカークラスタリングライブラリviewメールコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Formulasプロパティフロー設計Power Apps 導入並べ替えブログ 継続 コツDLPサブグリッドvalidationazure sql databasetailwindcssビューfirst()関数dialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理カラーセットテンプレート活用Power Apps 比較ヘッダー非表示技術力向上権限管理ベストプラクティスDataverse テーブルローコードCase式マルチテナントアクセス制限nestTips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理カラーユニバーサルデザイン自動化事例モデル駆動型 とはリスト フィルタ文章力 鍛え方野良権限部署AngularHTTP Requestドロップダウンメニューノーコード入れ子新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムアプリデザインNode.jsシステム構築便利アウトプット 重要性Teams ファイル共有リレーションシップAccessCSSBreakpointObserver承認動的リスト変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化UI/UXVisual Studio CodeAlternate Key野良アプリ対策IT エンジニア 転職OneDrive1対多InfoPathxUnitメディアクエリリマインドcollection検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定アクセシビリティPCF代替キーCoEブログ モチベーションつながり参照多対多MatTable.Net Core 3.1スマホSetコレクションMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docsアジャイル開発Wordテンプレート環境構築重複チェック内製化コンサルティングネタ切れ 対策システムカスタマイザーER図Angular MaterialVSCodePCForAll複数の添付ファイルセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタ準委任契約業務自動化カスタムコンポーネントGUIDITサポートAI ブログ 活用Connection Reference入門編データ構造.Net Core Test ExplorerレスポンシブUpdateContext承認フロー送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPI請負契約効率化Power Platform CLI業務キー月額定額PV数 増やす共同所有者1行テキストモデル駆動型アプリSortByColumns関数Dataverse for TeamsDynamics 365ロードマップフォームメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバー総合評価型入札資料作成開発手順複合キー委任問題権限トラブル主要な所有者複数行テキストPower AppsTypeScriptitem関数入門技術form差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデジタルトランスフォーメーション初心者向け拡張機能データ整合性Delegationアクセス権限環境変数選択肢Power PlatformHTMLGoogle Maps初心者Itエクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットプロポーザル方式ハウツービルドデータベース設計サブスクリプション型支援ファイルパスクラシック画面日付SharePointEF CoreMarker Clusterer中級者DXインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用官公庁システム画像挿入プロジェクト作成ユニークキーMVP共有設定ソリューションエクスポート整数ExcelマイグレーションRANK()関数キャンバスアプリノウハウカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性デジタル化推進複数レコードPCFギャラリー一意制約技術支援情報漏洩対策権限管理データ型Power AutomateFramework CoreDynamics 365 SalesDatePicker情報技術componentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進テーマカラーPDF変換業務システムURLパラメータ技術ブログ 書き方コマンドバーカスタマイズ組織変更C#Attribute directivesMicrosoft TranslatorDropdownメッセージIDダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ダークモード資料自動作成キャンバスアプリ 違いメンテナンスモードエンジニア ブログ メリットSharePoint管理センター注文管理アプリ
PageTop
ページトップに戻る