皆さん、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 リストも同様の列情報です。
PowerApps で作ったアプリの検証で利用する予定でした。それが、あんなことになるなんて・・・。
発生した課題
Excelからデータを取得する際、全て(今回の場合、約1,000行)を取得すると思うじゃないですか?
256行のデータしか取得してない んですよ・・・。
ホントに(。´・ω・)?
そう思いますよね?疑いますよね?
検証してみました。
検証用Flow全体像
Excelからデータを移行できればよいので、トリガーは手動。データ格納場所がOneDrive for Business なので、アクションは「Excel Online(Business)」の[表内に存在する行を一覧表示]です。このアクションで、OneDrive上に格納した該当Excelと、データ取得したいテーブルを指定します。
最後に「Notifications」で終了通知をしています。本来やりたかったコトは、Excelからデータを一覧で全て取得 → EorEach で 全データをSPOへ登録、というFlowになるので前述の「Notification」の部分がSPOのリストへ登録する処理になります。
実際に動かしてみた
Flowをテスト実行して、結果を確認してみました。「表内に存在する行を一覧表示」のステップで取得している内容が”本文”の箇所で確認できます。ガッっと末尾まってもっていくと・・・
ほら!最後が ”256” になってますよね!!
(Excel の Count = 画面の赤枠箇所にあるデータ)
何回試してみても、256行以上のデータは取得できませんでした。。。
Flow のアクション 詳細設定なんじゃないの?
そう、思って確認してみました。必須設定以外は初期のままです。
なんなら、[上から順に取得]の要素にある説明は”規定値 = すべて”ですよ!
規定値とは・・・。
”すべて”とは・・・。
256行しか取れないじゃないかッ!ヽ(`Д´)ノプンプン
アクションやAPIの仕様なんじゃないの?
そう思って、調べてみました。
■アクション
Excel Online(Business)
■Graph API
Microsoft Graph REST API v1.0/List rows
記事作成時点では、どこにも”256”という数値は確認できておりません・・・。
つまり、この記事を書いてる時点では(当方が調べた限りでは)「Excelのテーブルから MS Flow が値を取得可能なのは最大256行」という制約があり、それは公式サイトには明記されていない、という状況であると言えます。
制約に対する1つの対策(あるいは、当方が実施した回避方法)
さて、これ以上の時間を「制約なのか否か?」の調査に時間を割くのは無駄だと判断した当方。対策を実施して、制約を回避するコトにしました。その対策とは?
上画像の[スキップ数]を+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 を!