Power Automate PR

[Power Automate]パス指定で「表内に存在する行を一覧表示」を使う方法

記事内に商品プロモーションを含む場合があります

Power AutomateのExcel Online for Businessコネクタの「表内に存在する行を一覧表示」アクションは、対象ファイルを指定すると内部的にはファイルの識別子で管理されます。

そのため、ファイルを差し替えると、同じファイル名にしたとしても、異なるファイルと認識されエラーになります。

しかし、ファイルを差し替えたとしてもエラーにならないように「表内に存在する行を一覧表示」アクションを処理させたいというケースもあると思います。

このページでは、ファイルのパスを指定して「表内に存在する行を一覧表示」アクションを動作させる方法を説明します。

Power Automateを体系的に学習したい方は、下記もご覧ください。

承認フローについて詳細な手順を知りたい方は、下記もご覧ください。

Teamsを利用して組織内のコミュニケーションを強化したい方は下記もご覧ください。

【こちらもおすすめ】Teamsお役立ちノウハウ集

・【事例付き】Teamsを活用したマネジメントTIPS集
・【マネージャー向け】Teamsアプリを活用した「誰が何を知っているか」の集約・共有 事例集
・【Teamsアプリ活用事例集】メンター制度を置き換えて新人・異動者の育成を効率化する方法
・【問い合わせ管理でお困りの方向け】問い合わせ対応・ナレッジ蓄積へのTeams活用事例集
・【マネジメント・業務把握にお困りの方向け】マネジメント・報告業務へのTeams活用事例集
・【Teamsアプリを活用事例集】週報を自動で収集しサマリー&フィードバックする方法とは

パスを指定して「表内に存在する行を一覧表示」アクションを動作させる方法の概要

はじめに、ファイルのパスを指定して「表内に存在する行を一覧表示」アクションを動作させる方法の全体的な概要を説明します。
対象のExcelファイルは、SharePointのライブラリ上にある前提とします。

まず、「表内に存在する行を一覧表示」アクションで指定する内容は下記になります。

「場所」と「ドキュメントライブラリ」は、ファイルを差し替えても変わらない部分のため固定で設定します。

残りの「ファイル」と「テーブル」の識別子は、ファイルを差し替えると変更が発生する部分のため、別の手段で動的に入手してくる必要があります。

ファイルの識別子を動的に取得する方法

SharePointコネクタには、「パスによるファイルメタデータの取得」アクションがあり、各種情報を取得できます。しかし、「表内に存在する行を一覧表示」アクションで利用されるファイルの識別子は取得できません。

そこで「SharePoint に HTTP 要求を送信します」アクションを利用して、必要なファイルの識別子を取得します。

今回のケースでは、いくつかのステップを経て「SharePoint に HTTP 要求を送信します」アクションを設定することになります。具体的な手順については後述します。

テーブルの識別子を動的に取得する方法

テーブルの識別子を動的に取得するには、Excel Online for Businessコネクタの「テーブルの取得」アクションを利用します。

「テーブルの取得」アクションで指定する内容は下記です。

“ファイル”の部分に、上記で説明した”ファイルの識別子を動的に取得したもの”を入れることで、テーブルの識別子も動的に取得できます。

フローの流れ

上記をふまえ、今回説明するフローの流れは下記になります。下記の具体的な実装手順を次の章で説明していきます。

  1. 「SharePointにHTTP要求を送信します」アクションでファイル識別子を含むデータを取得する
  2. 「作成」アクションでファイル識別子のみを抜き出す
  3. 「テーブルの取得」アクションでテーブル識別子を取得する
  4. 「表内に存在する行を一覧表示」アクションを実行する
  5. 「表内に存在する行を一覧表示」アクションで取得したデータで何らかの処理をする

パスを指定して「表内に存在する行を一覧表示」アクションを動作させる方法の実装手順

パスを指定して「表内に存在する行を一覧表示」アクションを動作させるための実装手順をアクションごとに説明していきます。

①「SharePointにHTTP要求を送信します」アクションの実装手順

「SharePointにHTTP要求を送信します」アクションの実装にはいくつかの手順がありますので2つのステップに分けて説明します。

ステップ1:ライブラリの識別子を取得する

「SharePointにHTTP要求を送信します」アクションの設定内容は下記です。

下記のように設定します。

“サイトのアドレス”は、対象のSharePointを指定します。
“URI”は、「_api/v2.0/drives/」と入力します。
“ヘッダー”は、左辺には「accept」右辺には「application/json」と入力します。

ここまで設定したらフローを保存してテスト実行します。

実行結果の”id”の部分の文字列を控えます。前後のダブルクォーテーションは省きます。
ライブラリが複数ある場合は、”id”が複数あるため対象のライブラリの”id”を控えます。

下記は内容を一部抜粋したものです。ライブラリ名を確認できるため、対象のライブラリの”id”であることを確認して控えます。
また、ユーザの”id”も出力されますが、それは必要ないため無視します。

ステップ2:ファイルの識別子を取得する

編集画面に戻り、控えた文字列を下記のように_api/v2.0/drives/の後に貼り付けます。

さらに、下記のように /root:/ と入力します。

さらに、下記のように対象のファイル名を入力します。
下記はライラリの直下に「テスト ファイル.xlsx」というファイルがある場合の例です。スペースは%20に変換して入力します。
また、フォルダがある場合はファイル名の前に各フォルダ名も入力します

ここまで設定したらフローを保存してテスト実行します。

正しく入力できていれば、実行結果に下記のように”id”が表示されます。これがファイルの識別子です。”id”が表示されることを確認できたら次の手順に進みます。

②「作成」アクションの実装手順

「組み込み」タブの「データ操作」を選択します。

下記の「作成」アクションを追加します。

「式」タブで下記を入力します。bodyからidの部分を取得する式です。
bodyの部分は自動で挿入もできるためその手順も記載します。

outputs(‘SharePoint_に_HTTP_要求を送信します’)?[‘body’]?[‘id’]

bodyの部分を自動で挿入する場合は、下記のように実施します。

下記のように「式」タブをクリックして、「?[‘id’]」と入力します。

下記のように、入力カーソルを先頭に移動してから、「動的なコンテンツ」タブをクリックします。

「body」をクリックします。

bodyの値が挿入されたことを確認して「OK」をクリックします。

下記のようになります。

③「テーブルの取得」アクションの実装

Excel Online for Businessコネクタの「テーブルの取得」アクションを下記のように設定します。

“ファイル”には、「作成」アクションの動的コンテンツである”出力”を指定します。

ここまで設定したらフローを保存してテスト実行します。

下記のように、テーブルの識別子が表示されます。

Excelファイルにテーブルが複数ある場合は、複数出力されます。

その場合は対象のテーブルが何番目に出力されているかを控えてください。

④「表内に存在する行を一覧表示」アクションの実装

「表内に存在する行を一覧表示」アクションを下記のように設定します。

“ファイル”には、「作成」アクションの動的コンテンツである”出力”を指定します。

“テーブル”は、「作成」アクションの時と同じような手順で入力していきます。
まず、「式」タブを選択して「[‘id’]」と入力し、入力カーソルを先頭に移動して「動的コンテンツ」タブをクリックします。

次に、下記のように「テーブルの取得」アクションの動的なコンテンツである「value」をクリックします。

下記のように表示されます。このままですと”id”が一つしかなくても複数扱いとなるためApply to eachで囲まれてしまいます。そのため、テーブルを指定して一つにします。

「テーブルの取得」アクションの出力結果の1番目に対象のテーブルがある場合、下記のように[0]と入力し、「OK」をクリックします。
※この数値は「テーブルの取得」アクションの出力結果の何番目に対象のテーブルがあるかによって変更します。

下記のようになります。

⑤「表内に存在する行を一覧表示」の結果の取得方法

通常の「表内に存在する行を一覧表示」アクションの使い方であれば、後続のアクションで各列の値を動的コンテンツとして利用できますが、今回の方法の場合、下記のように表示されません。

検索すると、下記のように「body」と「value」は表示されますが、列名で検索しても各列の値は表示できません。

そこでitem関数を利用して、valueから値を手動で取得する方法をとります。

item関数は、Apply to eachの中で現在の値を取得するための関数です。

まず、「Apply to each」が自動追加されないため、手動で追加します。
「組み込み」→「コントロール」をクリックします。

下記をクリックします。
(表示名「Apply to each」から「それぞれに適用する」に変わりました?)

下記のように「value」を選択します。

下記のようになります。

ここから処理したい内容を実装します。例として「作成」アクションを実行します。

Excelファイルの中身は、下記を例とします。

「作成」アクションを追加して、下記のように「式」タブで「item()[‘A’]」と入力します。「Apply to each」内の現在のA列の値を取得しています。

実行すると、下記のように正常にA列の値を取得できます。

まとめ

Power Automateでファイルのパスを指定して「表内に存在する行を一覧表示」アクションを動作させる方法を紹介しました。

「表内に存在する行を一覧表示」アクションが内部的に利用しているファイル識別子を簡単に取得するアクションが用意されてないため、複雑な手順になります。

ファイル名やパスが変更になったときのメンテナンス等を考慮すると、基本的にはパスが変更されない運用にするのが望ましいと思います。

Power Automateを体系的に学習したい方は、下記もご覧ください。

承認フローについて詳細な手順を知りたい方は、下記もご覧ください。

Teamsを利用して組織内のコミュニケーションを強化したい方は下記もご覧ください。

【こちらもおすすめ】Teamsお役立ちノウハウ集

・【事例付き】Teamsを活用したマネジメントTIPS集
・【マネージャー向け】Teamsアプリを活用した「誰が何を知っているか」の集約・共有 事例集
・【Teamsアプリ活用事例集】メンター制度を置き換えて新人・異動者の育成を効率化する方法
・【問い合わせ管理でお困りの方向け】問い合わせ対応・ナレッジ蓄積へのTeams活用事例集
・【マネジメント・業務把握にお困りの方向け】マネジメント・報告業務へのTeams活用事例集
・【Teamsアプリを活用事例集】週報を自動で収集しサマリー&フィードバックする方法とは