Power AppsからSPOリストのアイテムを新規作成する方法について質問されたので、ここにメモ。
前提
今回使用するリストはこんな感じ。
- 文字列
- 数字
- はい/いいえ
- 選択肢
の列があるだけのいたって普通のリスト。
このリストにPower Appsからアイテムを新規追加していく。
Formコントロールを使用する方法
まずはフォームコントロールを使用する方法。
[フォーム]から[編集]を選んで、
[データに接続] → [データの追加] → [SharePoint]を選択、
さっきのリストを選択。
そしたらさっき追加したフォームの[データソース]プロパティに追加したSPOリストを選んで、
フォームの規定モードを[新規]にする。
あとはボタンを追加して、OnSelectにSubmitForm関数を追加してやれば完成!
適当に値を入れて追加ボタンを押すと、
SPOリストにアイテムが追加される。
連続で追加したい場合
追加ボタンを押してSubmitForm関数を呼ぶと、フォームはこんな表示になる。
これは、「新規」モードのフォームにSubmitForm関数を呼ぶとフォームが「編集」モードになる、という仕様のため(FormMode.Editの値は0)。
「編集」モードのフォームに対して「何を編集するか?」(Itemプロパティ)を設定していないので、さっきの「表示するアイテムがありません」メッセージが表示される。
「編集」モードのフォームに対して「何を編集するか?」(Itemプロパティ)を設定していないので、さっきの「表示するアイテムがありません」メッセージが表示される。
フォームをずっと「新規」モードで使いたいとき、色々とやり方はあるけれど今回はこんな感じでOnSuccessイベントにNewForm関数を入れてあげる。
すると、追加ボタンを押してSPOリストアイテムを追加しても、
[新規]モード(FormMode.Newの値は1)のままになる。
Patch関数を使用する方法
続いてPatch関数を使う方法。
まずは同様に[データの追加]からSPOリストを追加(既に追加している場合はこの手順は不要)。
そしたら適当なボタンなんかを追加して、こんな感じでOnSelectにPatch関数を入れてあげる。
- 第1引数:追加するSPOリスト(データソース)
- 第2引数:Defaults関数(引数には追加するSPOリスト)
- 第3引数:実際に追加するデータ(今回はタイトル列, 数字列, はい/いいえ列, 選択肢列の値)
※第2引数のDefaults関数はなくても動くっぽいんだけど、今回は公式に従ってきちんと入れておく。
Patch関数を設定したボタンを押してあげると、こんな感じでリストアイテムが追加される。
ボタンじゃなくてもよい
Patch関数を呼び出せればよいので、呼び出し元はもちろんボタンである必要はなくて、
例えばこんな感じでTimerを作ってあげれば、
1秒に1個SPOリストアイテムが追加される、世にも恐ろしいアプリができあがる。
ループとも組み合わせることができる
ForAll関数とSequence関数を使ったループからも呼び出せて、こんな感じの式をボタンのOnSelect関数に入れてあげれば、
Sequence関数で指定した数のSPOリストアイテムを作ることができる。
おまけ:Formコントロールでもアイテムの連続追加は可能
Patch関数の方が小回りはきくんだけど、Formコントロールでも連続アイテム追加は不可能じゃない。
SubmitForm関数で新規追加(編集も)するとき、参照される値はUpdateプロパティに設定されている値。
なのでUIが不要であればこんな感じでロックを解除して、
中のコントロールを全部消してしまって、Formを非表示にしても大丈夫!
Updateプロパティでエラーが出てるけど、アイテムとして追加してあげたい値(今回はサンプルなんで固定値)を入れてあげればエラーも消える。
そしてボタンにさっきみたいなForAll関数とSequence関数、そしてSubmitForm関数とNewForm関数をこんな感じで設定し、ボタンを押してあげれば、
こんな感じで大量のデータを一気に入れることもできる。
ただしPatch関数に比べるとかなり遅いw
コメント