15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【MS Flow】Excelからは最大256行しか取得できない!?

Posted at

皆さん、Microsoft Flow(以降、MS Flow)利用されてますか?便利ですよね。さて、今回は MS Flow で、Excelのテーブルからデータを取得した際に罠にはめられた話題です。
(*-ω-)。o○(記事タイトルでネタバレしてるんですけどねw)

おことわり

この記事は、2019年8月23日時点のOffice 365環境で確認しています。今後のVerUP等で動作が変更・改善される可能性がありますのでご認識のうえご確認ください。

経緯

MS FlowのExcel Online(Business)を利用して、Excelファイル上のデータをSharePoint Online(SPO)のカスタムリストへ登録しようと思ったんですよ。およそ、1,000行ぐらいw

データは下イメージのように、「値」と「カウント」がある単純なテーブルです。データを登録する先のSPO リストも同様の列情報です。
01.png

PowerApps で作ったアプリの検証で利用する予定でした。それが、あんなことになるなんて・・・。

発生した課題

Excelからデータを取得する際、全て(今回の場合、約1,000行)を取得すると思うじゃないですか?

256行のデータしか取得してない んですよ・・・。

ホントに(。´・ω・)?
そう思いますよね?疑いますよね?
検証してみました。

検証用Flow全体像

Excelからデータを移行できればよいので、トリガーは手動。データ格納場所がOneDrive for Business なので、アクションは「Excel Online(Business)」の[表内に存在する行を一覧表示]です。このアクションで、OneDrive上に格納した該当Excelと、データ取得したいテーブルを指定します。
02.png

最後に「Notifications」で終了通知をしています。本来やりたかったコトは、Excelからデータを一覧で全て取得 → EorEach で 全データをSPOへ登録、というFlowになるので前述の「Notification」の部分がSPOのリストへ登録する処理になります。

実際に動かしてみた

Flowをテスト実行して、結果を確認してみました。「表内に存在する行を一覧表示」のステップで取得している内容が”本文”の箇所で確認できます。ガッっと末尾まってもっていくと・・・
04.png

ほら!最後が ”256” になってますよね!!
(Excel の Count = 画面の赤枠箇所にあるデータ)
何回試してみても、256行以上のデータは取得できませんでした。。。

Flow のアクション 詳細設定なんじゃないの?

そう、思って確認してみました。必須設定以外は初期のままです。
03.png

なんなら、[上から順に取得]の要素にある説明は”規定値 = すべて”ですよ!

規定値とは・・・。
”すべて”とは・・・。

256行しか取れないじゃないかッ!ヽ(`Д´)ノプンプン

アクションやAPIの仕様なんじゃないの?

そう思って、調べてみました。

■アクション
Excel Online(Business)

■Graph API
Microsoft Graph REST API v1.0/List rows

記事作成時点では、どこにも”256”という数値は確認できておりません・・・。

つまり、この記事を書いてる時点では(当方が調べた限りでは)「Excelのテーブルから MS Flow が値を取得可能なのは最大256行」という制約があり、それは公式サイトには明記されていない、という状況であると言えます。

制約に対する1つの対策(あるいは、当方が実施した回避方法)

さて、これ以上の時間を「制約なのか否か?」の調査に時間を割くのは無駄だと判断した当方。対策を実施して、制約を回避するコトにしました。その対策とは?
05.png

上画像の[スキップ数]を+256して、4回 Flow を実行したのです。256行 * 4回、これで1,000行はデータ投入されますよね?

当方の目的は、あくまでSPO リストへデータが登録されること、でした。そして、作成したFlowは使い捨てで問題ありません。手動で4回実行するぐらい大したロスではありませんよね。

これがシステムのアーキテクチャーに組み込まれている場合はハナシが別だと思います。その際は、このExcelに関するアクションの外側にLoop(繰り返し)処理を置いて、変数などで[スキップ数]を操作するか、[フィルタ クエリ]を操作するかになるかな、と思います。少し大がかりになってしまいますが、256行しかExcelからデータを取得ができないんですもん・・・しょうがないですね( ̄▽ ̄;)

まとめ

  • 「Excel Online(Business)」の[表内に存在する行を一覧表示]で取得可能な行数は最大256行
  • 調べても、公式情報で制約があることは確認できない
  • 回避するには、スキップ数 や フィルタ クエリ を利用する

こういうトラブル(?)があると、原因解明や調査などが楽しくなって、ついつい本題を忘れちゃいますよね?当方の場合は”SPOへデータ登録ができること”が目的で、MS FlowのExcelアクションにおける制約を調査することが目的ではないのですよ。(楽しくなって、調査しちゃって、この記事に至るワケなんですがw)
途中で我に返って、手動で対応した次第なんですが、皆さんも目的(あるいは”やるべきコト”や”本題”)を忘れないようご注意ください。あ、あと、256行がMaxぽいんで、そちらもご注意されたしです。

それでは、皆さま。素晴らしい Power Platform Life を!

15
6
1

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
15
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?