自動化
PR

Power AutomateでExcelの行を追加・取得・更新する方法|テーブル必須の理由と256行制限も解説

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

はじめに

Power Automate で Excel を扱いたいとき、最初にぶつかるのが「行の追加・取得・更新はどのアクションを使えばいいのか」という疑問です。

さらに、いざ使ってみると「テーブルが選択肢に出てこない」「日付が 45017 のような数字で返ってくる」「256 行までしか取れない」といった、地味だけど確実にハマるポイントが待っています。

本記事では、Excel Online (Business) コネクタの行操作アクション(表に行を追加/表内に存在する行を一覧表示/行の取得/行の更新/行の削除)の使い方を、実際の画面つきで最初から解説します。

あわせて、上に挙げた 3 大ハマりどころ(テーブル必須・日付シリアル値・256 行制限)の対策も実機で確認した結果を載せます。すべて標準コネクタのみ(プレミアム不要)です。

こんな人にオススメ
  • Power Automate から Excel の行を追加・取得・更新・削除したい
  • 「テーブル」の選択肢が空っぽで先に進めない
  • 一覧表示で日付が数字になる・256 行までしか取れないのを直したい

Power Automate の基本・料金・他の実例一覧はこちら。

あわせて読みたい
Power Automateとは?できること・使い方・始め方を実例28本で解説
Power Automateとは?できること・使い方・始め方を実例28本で解説

事前準備:Excel のデータを「テーブル」にする

Power Automate の Excel 行操作アクションは、シート上のセル範囲ではなく「テーブル」を単位にデータを読み書きします。そのため、まず変換元のデータをテーブルとして書式設定しておく必要があります。ここを飛ばすと後述のとおり、そもそもアクションが使えません。

テスト用に作成しOneDrive for Business に置いた PA行操作テスト.xlsx で、データ範囲を選択し [挿入]→[テーブル] を実行します。「先頭行をテーブルの見出しとして使用する」にチェックを入れておきましょう。

Excel Online でデータ範囲を選択し、挿入からテーブルを作成するダイアログ。先頭行を見出しとして使用にチェック

テーブルを作ったら、[テーブル デザイン]タブでテーブル名を分かりやすい名前に変更しておきます。ここでは 社員名簿 にしました。Power Automate 側ではこのテーブル名で対象を選ぶため、テーブル1 のままだと後で分かりにくくなります。

Excel のテーブル デザインタブでテーブル名を社員名簿に変更している画面

今回のサンプルは 社員ID / 氏名 / 部署 / 入社日 / メモ の 5 列です。列名(見出し)がそのまま Power Automate 側の入力欄になるので、分かりやすい列名を付けておくと後がラクです。

【最重要】テーブルにしていないと行操作は使えない

「事前準備」を強調したのには理由があります。テーブルとして書式設定していないシートは、行操作アクションの対象として選択できません。試しに、テーブル化していないベタ打ちデータのファイルを「表に行を追加」に指定してみると、「テーブル」ドロップダウンには候補が一切表示されず「項目なし」になります。

テーブル化していないExcelファイルを指定すると、テーブルのドロップダウンが項目なしになり選択できない

これは「表に行を追加」だけでなく、一覧表示・取得・更新・削除のすべての行操作アクションで共通です。「テーブルが選べない」ときは、まず対象シートがテーブルとして書式設定されているかを疑ってください。

行を追加する:「表に行を追加」

まずは一番よく使う「表に行を追加」です。場所(OneDrive for Business)・ドキュメントライブラリ・ファイル・テーブルを選ぶと、テーブルの列に応じた入力欄が動的に生成されます。今回なら 社員ID / 氏名 / 部署 / 入社日 / メモ の 5 つが並びます。

表に行を追加アクションで、テーブルの列に応じた入力欄が動的に生成された画面

各欄に値を入れて実行すると、テーブルの末尾に 1 行追加されます。Excel Online を開いて見ると、指定した内容の行がきちんと増えているのが確認できます。

Power Automate の実行後、Excel Online のテーブル末尾に行が追加されている画面

行をまとめて取得する:「表内に存在する行を一覧表示」

テーブルの全行を読み取るには「表内に存在する行を一覧表示」を使います。取得結果は各行が JSON の配列で返り、後続の「それぞれに適用する(Apply to each)」で 1 行ずつ処理するのが定番です。ただし、この一覧表示には初心者が必ず踏む落とし穴が 2 つあります。

落とし穴1:日付が「45017」のような数字で返る

既定のまま一覧表示を実行すると、入社日 のような日付列が Excel のシリアル値(数値)で返ってきます。たとえば 2023/4/145017 という数字になります。これをそのままメールや別システムに渡すと、日付として使えず困ることになります。

表内に存在する行を一覧表示の出力で、入社日がシリアル値45017として返っている

対策はかんたんです。アクションの詳細オプションにある「DateTime 形式」を ISO 8601 に変更します。

表内に存在する行を一覧表示のDateTime形式パラメーターをISO 8601に設定する画面

これで再実行すると、日付が 2023-04-01T00:00:00.000Z のような ISO 8601 形式の文字列で返るようになります。あとは formatDateTime() で好きな表記に整えれば OK です。

DateTime形式をISO 8601にした後、入社日が2023-04-01T00:00:00.000Zの文字列で返る

日付を「2026/07/05」や「7月5日(日)」のように整形したい場合は、Power Automate の日付関数を使います。formatDateTimeconvertTimeZone(UTC → 日本時間)の使い方は別記事で詳しく解説予定です。

落とし穴2:256 行までしか取得できない

もう 1 つの大きな罠が取得件数の上限です。300 行あるテーブルを既定設定で一覧表示すると、256 行しか返ってきません。出力の末尾を見ると @odata.nextLink(次ページの URL)が付いており、「まだ続きがあるのに途中で切れている」ことが分かります。

表内に存在する行を一覧表示の出力が256行で切れ、@odata.nextLinkが付与されている

これが怖いのはエラーにならず「成功」してしまう点です。256 行で切れていることに気づかないまま処理を組むと、257 行目以降が黙って無視されます。大量データを扱うフローでは特に注意してください。

対策は、アクションの「設定」を開き、「改ページ(ページ分割)」をオンにして、しきい値(取得したい最大行数)を指定することです。ここでは 1000 に設定しました。

表内に存在する行を一覧表示の設定で、改ページをオンにしてしきい値を1000に設定する画面

設定を変えて再実行すると、300 行すべてが返り、@odata.nextLink も付かなくなりました。これで全行を確実に処理できます。

改ページ設定後、300行すべてが返り@odata.nextLinkが付かなくなった出力

特定の行を取得・更新・削除する(キー列)

「行の取得」「行の更新」「行の削除」は、キー列(どの列で行を特定するか)とキー値を指定して 1 行をピンポイントに操作します。ここでは 社員ID をキー列にして、社員ID 1001 の行を取得しています。

行の取得アクションで、キー列に社員ID、キー値に1001を指定した画面

「行の更新」も同じ要領です。キーで対象行を指定し、変更したい列だけ値を入れれば、その列だけが書き換わります(未指定の列は元のまま)。下は 部署 だけを更新した結果です。

行の更新後、Excel側で指定した行の部署列だけが書き換わっている

キー列は必ずユニーク(重複しない)列にしましょう。 キー値が重複していると、テーブル内で最初に見つかった 1 行だけが処理され、残りの重複行は無視されます(エラーにはなりません)。下の例では社員ID 2010 の行が 8 件ありますが、更新されたのは先頭の 1 件だけです。氏名などの重複しうる列をキーに使うと事故のもとです。

社員ID 2010の重複行が8件あるうち、先頭の1行だけが更新され残りは変わらない

存在しないキーを指定すると 404 エラーで止まる

「行の取得」で存在しないキー値(ここでは 9999)を指定すると、HTTP 404 が返り、フロー全体が失敗になります。エラーメッセージは「ID '9999' を持つ行が見つかりませんでした。」です。既定では後続のアクション(更新・削除)はスキップされます。

存在しないキー9999を指定した行の取得が404で失敗し、後続がスキップされたフロー

「対象行があるか分からない」ケースでは、いきなり「行の取得」で 404 を出すより、先に「表内に存在する行を一覧表示」+フィルター(取得するアイテムのフィルター条件)で絞り込むほうが安全です。ヒットしなくてもエラーにならず、空の結果が返ります。

なお、対象の Excel ファイルをブラウザで開いたまま「表に行を追加」を実行しても、Excel Online の共同編集の仕組みによりブロックされず正常に追加できました(開いている画面にもリアルタイムで反映されます)。デスクトップ版 Excel で排他ロックがかかっている場合とは挙動が異なる点だけ覚えておくと安心です。

まとめ

Power Automate の Excel 行操作は、基本さえ押さえれば難しくありませんが、「知らないと必ずハマる仕様」がいくつかあります。最後に要点を整理します。

  • 行操作は「テーブル」が前提。 テーブル化していないシートは選択できない
  • 日付はシリアル値で返る。 「DateTime 形式」を ISO 8601 にして文字列で受け取る
  • 一覧表示は既定 256 行まで。 「改ページ」をオンにしてしきい値を上げる
  • 取得・更新・削除のキー列はユニークな列に。 重複キーは先頭 1 件のみ処理
  • 存在しないキーは 404 で失敗。 不確実なら一覧表示+フィルターで安全に

取得した行を CSV ファイルとして書き出したい場合は、こちらの記事もあわせてどうぞ。

あわせて読みたい
Power Automateで ExcelをCSVに自動変換する方法|「CSVテーブルの作成」開設
Power Automateで ExcelをCSVに自動変換する方法|「CSVテーブルの作成」開設
あわせて読みたい
Power Automateとは?できること・使い方・始め方を実例28本で解説
Power Automateとは?できること・使い方・始め方を実例28本で解説
記事URLをコピーしました