一昔前まで Power Apps のデータソースに Excel を使うのはタブー視されていましたが、ここ最近「Excelも場合によってはありっちゃあり」と見直しました。
本格的な開発にはやっぱりリスト/Dataverse一択になってしまうのですが、どうして Excel への評価を見直すことになったか紹介します。
Excelの進化
Excel を Power Apps のデータソースとして使うのは絶対に避けなければいけない理由が、過去にはいくつか存在しました。
しかし、2021年4月以降の数回のアップデートにより、Excelは進化を遂げています。
委任が一切できなかった▶一部は委任できるようになっている
Excel をデータソースにすると一切の関数が委任不可でした。
委任できないということは、どんなに頑張っても2,000件までしかデータが扱えなかったということです。
しかし今では一部関数は委任問題をクリアするようになっています。
同時編集できなかった▶同時編集できるようになっている
Excel をデータソースにしたアプリを使う場合、誰かがアプリを開いている時に別の場所で同時にアプリを起動するとエラーが起きていましたが、それが今はクリアになっています。
また、Excelが開きっぱなしだとアプリ側でパッチ処理がエラーになる(Submit Formも同様)事象がありましたが、これも無くなっています。
関数が入っているとエラー▶エラーにならなくなった
セルに関数(=A1+B1など)が入っているとアプリのエラーを引き起こしていましたが、それも無くなりました。
変更履歴が残らなかった▶Excelに履歴が残るようになった
誰がいつどんな変更を加えたか、アプリから変更を加えたExcelに履歴が残るようになりました。
コツはコネクションを使うこと
ただし、上記のExcel進化を体感するためには、キャンバスアプリから「Excel Online(Business)」コネクタ、または「OneDrive for Business」コネクタを使ってExcelと連携しなくてはいけません。
アプリを新規作成する際に「データで開始する」から始めてしまうと、内部で古いExcelのコネクションを使ってしまうようで、進化する前のポンコツExcel機能しか利用できません。
Excel Online(Business)とOneDriver for Businessの違い
- 「Excel Online(Business)」コネクタ
- 「OneDriver for Business」コネクタ
この2つのコネクタのどちらかを利用しなければいけないのはわかったけど、2つの違いが気になると思います。
2024年7月現在、どちらのコネクタを利用するかで、進化版Excelの機能に違いがあることがわかっています。
Excel Online (Business) | OneDrive for Business | データで開始 した場合 | |
---|---|---|---|
Search関数 | 1列のみ。委任可能。 | 複数列。委任可能。 | 1列のみ。委任不可。 |
同時編集 | 可能 | 不可 | 不可 |
関数を使ったセル | エラー | 表示可能 | エラー |
Search関数が委任可能な点は見逃せないでしょう。
この点においてはリストよりも優れていますし、Search以外でも、リストでは委任不可でもExcelで委任可能な関数は存在すると思われます。
それでもExcelが主役のデータソースにはならない理由
地味に進化する(そしてそれが公式ドキュメントに載っていないという)Excelですが、それでも私は本番開発においてExcelを使うことはこの先ないでしょう。
その理由はこちらです。
ユーザー列が存在しない
Excelにはユーザー列が存在しないため、入力者情報の取り扱いが面倒です。
リストやDataverseは入力した人の氏名・アドレス・所属部署などEntra IDに紐づく情報を抽出できますが、Excelにはそれがありません。
画像の取り扱いが不明
これは私が未検証なのが理由ですが、Excelにおける画像の取り扱いが不明です。
できるのかもしれませんし、できないかもしれません。
Power Automateとの相性が悪い
Power AutomateとExcel Onlineは非常に相性が悪いです。
Power AutomateでExcel Onlineに何らかの変更をかけた場合、Excel内部でその情報が反映されるまでにラグ(遅延)が発生します。
そのため、AutomateのApply to eachアクションで繰り返し同じ処理をExcel Onlineに施す場合、遅延回避の処理を入れておかないと新しいデータが古いデータを上書きしてしまい、正しく処理されない事象が発生してしまうのです。
リストやDataverseであれば、Automateの処理は即座に反映されるため、ラグを心配する必要なく使えます。
参考までに、このラグは1つのデータに対しておよそ40秒〜50秒ほどあります(2024年7月現在)。
例えば、10人分の日報をApply to eachでExcel Onlineに転記し、1つずつPDFに変換しようとする場合、遅延回避のアクションを組み込むと約10分弱かかってしまうというわけです。
Excelのご利用は計画的に
一部のネット情報や動画では、Excelは絶対に使ってはならないデータソースと訴えるものがありますが、それは2021年4月以前のExcelを触った人か、もしくはコネクションの仕様を知らない人でしょう。
Excelはその後も地味に進化を続けていて、全く非推奨とまではいわないレベルになっていると感じます。
ただし最後に述べたように、本番開発において私がExcelデータソースを利用することはありませんし、開発に慣れた人も、今更Excelが進化していると知ったところで、使い勝手のいいリスト/Dataverseから乗り換える理由は見当たらないでしょう。
Excelは個人で使うアプリ、練習用アプリで気軽に使うデータソースとしてとどめ、リストもしくはDataverseに少しでも早く慣れるといいでしょう。