Power Apps 超入門(相変わらずクソ仕様)

会社ではMicrosoft社の方針に従わざるをえず、クソ仕様なPower Platformを使う羽目になっています。
しかし既存の業務をExcelとPower Automateで連携してみても、人間の操作が障害となってまともに動きません。そこでアプリを開発するためにPower Appsを使い始めました。

Power Appsの制約

しかしPower Appsでは、無償の範囲ではモデル駆動型アプリ(データを先に作成してから実装する)が使えません。これでは何のためのアプリか分からないと感じますが、仕方がないので無償の範囲でPower Appsの実装を始めました。

データベースに何を使うか

 無償でDataverse for Teamsが使えるとか言われていますが、Power Appsの作成は既存のデータからしか始められず意味がわかりません。
 かといってDataverseというアプリメニューがあるわけでなくDataverseのデータが作れるわけではないので、Share Point Listをつかってデータを作ってみました。Share Point ListとはListsで作ることができるデータのことです。

SharePointListでデータを作成する

 しかしListsでは基本個人のOne Driveにしかデータを書き込むことができず、Teams内にデータを作ることができません(まさにクソ)。
 任意のSharePointフォルダ(Teamsフォルダ)にSharePointリストを作るには、TeamsフォルダからSharePointListで開くを選択して、サイトコンテンツメニューを選択し、「+新規」でSharePointListを作ってあげる必要があります。
 そこからCSVやExcelでデータを流し込むことになりますね。

アプリを作成する

アプリを作成するには、まずデータを接続し、ギャラリー(リスト選択画面)とフォーム(項目の表示・編集画面)を貼り付けながら作成していきます。

データを接続する

 データができたら今度はPower Appsでアプリを作ってあげることになりますが、これがまたわけわからない。
 まずは、データ(SharePointList)を繋いであげる必要があります。ドラムのアイコンからSharePointのコネクタを選んであげると、Teamsチームのリストがでてくるので該当するチームを選択すると、作成したSharePointListが表示されるので選択します。

データを表示させる

 データを表示させるには、ギャラリーとフォームを接続して表示させることになります。ギャラリーはからならずしも必要ないかもしれませんが、その方が簡単ですね。

ギャラリーを追加する

 つぎにスクリーンにギャラリーを追加します。ギャラリーとはデータベースの行を選択する画面です。挿入メニューからギャラリーを選択すると勝手にリストが表示されます。

フォームを追加する

 次にギャラリーで選択した行の各項目を表示させるためのフォームを追加します。これも挿入メニューからフォームを選択するだけで、データベースの項目を追加してくれます。

ギャラリーとフォームを接続する

 この方法がわからないんだわ。デフォルトで実装してもらいたいものですが、おまじないが必要です。Chat GPTに聞いてわかりました。Chat GPTがなかったらどうやって知るのでしょう。
 まず、表示されているギャラリーを選択して、選択しているアイテムを変数に格納します。ギャラリーのOnSelectプロパティに

Set(selectedItem, ThisItem)

を入れます。これぞノーコードだわww

 次にフォームを選択し、Itemプロパティに

selectedItem

を入れます。これでフォーム上の全ての項目にギャラリーで選択した行の項目が全て表示されまます。

データ(行)の削除

データ(行)を削除するには、ギャラリーで選択したアイテムを削除するボタンを追加します。ボタンを追加しGUIで名前を「削除」に変更後、ボタンのOnSelectプロパティに

Remove(SharePointList名, selectedtem)

を入れると出来上がります。まぁコードとしては簡単ですが、ノーコードではないですねぇ

データ(行)の追加

データ(行)を追加するには、表示とは別に新規入力のための別スクリーンを表示して項目のデータを入力させて追加する必要があります。

まずは、新規入力用のスクリーンを挿入し、その上にフォームを挿入します(SharePointListを指定)。

その後、表示用のスクリーンに戻り、追加ボタンを挿入します。ボタンを挿入して、ボタンのOnSelectプロパティに

Navigate(NewItemScreen, ScreenTransition.Fade);

を記入します。

その後、新規入力のためのスクリーンにOKボタンを挿入し、Onselectプロパティに次のコードを実装します。

SubmitForm(FormName);
If(FormName.Valid, Navigate(MainScreen, ScreenTransition.Fade));

あとはデータの変更も必要になりますが、上記のフォームでデータを入れて表示するという実装を必要とするかと思います

いかがでしたでしょうか。

 Power Platformについては、どうやら魑魅魍魎(ちみもうりょう)の界隈では、自分でデータを追加したり削除したりできる、という妄想をもっているようですが、「あなたがたにはできませんから」といいたいですね。

 これからさらに項目間の複雑なルールを実装しなくてはなりません。とりあえずプロトタイプで項目数やデータ数を減らして実装してみましたが、項目数が100近くあり画面設計や実装がが面倒ですねぇ。すでにExcelで作っているのだからそっちを使ってくれといたいですねぇ。

 魑魅魍魎たちの妄想につきあうのは疲れますわ・・・

この記事が気に入ったらサポートをしてみませんか?