2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Power Automate クラウドフロー】Excelの256行制限を回避する方法(Office Scripts活用)

2
Last updated at Posted at 2026-04-09

結論

・256行制限 → Office Scriptsで回避
・データ整形 → JSONの解析(Parse JSON)
・型エラー → スキーマ修正で回避

Power AutomateクラウドフローのExcel処理では、

・標準アクションで対応できる部分はそのまま使う
・対応できない部分をOffice Scriptで補う

という組み合わせで設計するのが現実的です。

アクションの流れ

[トリガー]
      ↓
[スクリプトの実行(Run script)]
      ↓
  (JSON配列を取得)
      ↓
[JSONの解析(Parse JSON)]
      ↓
[Apply to each]
      ↓
[各列の値を利用(条件分岐・登録など)]

背景と今回の選択

256行制限に当たった

Power Automateの
「テーブル内に存在する行を一覧表示(List rows present in a table)」

これは、標準設定では最大256行までしか返りません。

約10,000行のテーブルを扱う場合、
このままではデータを取り切れません。

ページネーションという選択肢

回避策として、ページネーションがあります。
設定を有効にすれば、しきい値は最大100,000まで設定できます。

設定手順:

  1. アクション右上の「…」
  2. 「設定」
  3. 「ページネーション」をON
  4. しきい値を設定

Microsoft Learn
https://learn.microsoft.com/en-us/connectors/excelonlinebusiness/

※実際の取得件数は、ページネーション設定・フローの種類・コネクタの制限などの影響を受けます。

公式ドキュメントではページネーションで全件取得できる前提ですが、実運用ではフローの種類や実行条件によって制約を受けることがあります。

また、スケジュールフローでは 5,000 を超える設定で保存できないケースがある、という報告もあります。
https://elliskarim.com/2025/04/19/power-automate-how-to-read-more-than-256-rows-from-an-excel-table/

今回ページネーションを採用しなかった理由

理由はシンプルで、

・.xlsm(マクロファイル)を扱いたかった
・できるだけ高速にテーブルデータを取得したかった

この2点です。

そのため今回は、
データ取得をOffice Scriptで行う構成にしました。

Office Script

久しぶりにJavaScriptに触れたく、
自分で書きました。
無事に値が返ると嬉しいですよね。

・シート名
・テーブル名

を引数として受け取る形で実装しています。

本番環境でも、
この構成に近い形で使用しています。

function main(workbook: ExcelScript.Workbook, sheetName: string, tableName: string) {

  const table = workbook.getWorksheet(sheetName).getTable(tableName);
  const range = table.getRangeBetweenHeaderAndTotal();

  if (!range) return [];

  const values = range.getValues();
  const headers = table.getHeaderRowRange().getValues()[0];

  return values.map(row => {
    let obj = {};
    headers.forEach((h, i) => obj[h] = row[i]);
    return obj;
  });
}

出力形式

[
  {
    "社員番号": 1001,
    "氏名": "山田太郎",
    "金額": 5000
  }
]

1行=1オブジェクトの配列になります。

JSONの解析

このままだと、列単位でデータを扱えません。

なぜか

Power Automate側が、
JSONの構造を認識できていないためです。

その結果、

・列名で値を取れない
・動的コンテンツに出てこない

状態になります。

JSONの解析を挟む

ここで「JSONの解析(Parse JSON)」を使います。

やることはシンプルです。

  1. JSONの解析を追加
  2. コンテンツに出力を指定
  3. 「サンプルから生成」でJSONを貼り付け

これだけで、

・列ごとに値を取得できる
・動的コンテンツに表示される

ようになります。

「JSONの解析」の詳細はbaku2san(taka)様の以下記事をご確認ください。

ハマりポイント

スキーマは、サンプルデータを元に生成されます。

そのため、

5000(数値)
null / ""(空値)

のように型が混在すると、

Invalid type. Expected Integer but got String.

といったエラーが発生します。

解決方法

JSONの解析のスキーマを修正し、
複数の型を許容します。

"金額": {
  "type": ["number", "string", "null"]
}

これで解消できます。

まとめ

Power AutomateのExcel処理は、
標準アクションだけでは限界があるケースがあります。

特にデータ量が多い場合は、

・Excel側でデータ取得(Office Scripts)
・Power Automate側で処理(JSON解析)

の組み合わせ使うことで、
安定したフローを構築できます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?