Power AppsからSPOリストのアイテムを新規作成する方法について質問されたので、ここにメモ。
前提
今回使用するリストはこんな感じ。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem001.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem001.png)
- 文字列
- 数字
- はい/いいえ
- 選択肢
の列があるだけのいたって普通のリスト。
このリストにPower Appsからアイテムを新規追加していく。
Formコントロールを使用する方法
まずはフォームコントロールを使用する方法。
[フォーム]から[編集]を選んで、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem002-1024x638.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem002-1024x638.png)
[データに接続] → [データの追加] → [SharePoint]を選択、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem003-1024x697.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem003-1024x697.png)
さっきのリストを選択。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem004-1024x633.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem004-1024x633.png)
そしたらさっき追加したフォームの[データソース]プロパティに追加したSPOリストを選んで、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem005-1024x595.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem005-1024x595.png)
フォームの規定モードを[新規]にする。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem006-1024x551.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem006-1024x551.png)
あとはボタンを追加して、OnSelectにSubmitForm関数を追加してやれば完成!
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem007-1024x497.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem007-1024x497.png)
適当に値を入れて追加ボタンを押すと、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem008-1024x666.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem008-1024x666.png)
SPOリストにアイテムが追加される。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem009.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem009.png)
連続で追加したい場合
追加ボタンを押してSubmitForm関数を呼ぶと、フォームはこんな表示になる。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem009-2-1024x584.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem009-2-1024x584.png)
これは、「新規」モードのフォームにSubmitForm関数を呼ぶとフォームが「編集」モードになる、という仕様のため(FormMode.Editの値は0)。
「編集」モードのフォームに対して「何を編集するか?」(Itemプロパティ)を設定していないので、さっきの「表示するアイテムがありません」メッセージが表示される。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem010-1024x659.png)
「編集」モードのフォームに対して「何を編集するか?」(Itemプロパティ)を設定していないので、さっきの「表示するアイテムがありません」メッセージが表示される。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem010-1024x659.png)
フォームをずっと「新規」モードで使いたいとき、色々とやり方はあるけれど今回はこんな感じでOnSuccessイベントにNewForm関数を入れてあげる。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem011-1024x448.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem011-1024x448.png)
すると、追加ボタンを押してSPOリストアイテムを追加しても、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem012-1024x595.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem012-1024x595.png)
[新規]モード(FormMode.Newの値は1)のままになる。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem013-1024x588.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem013-1024x588.png)
Patch関数を使用する方法
続いてPatch関数を使う方法。
まずは同様に[データの追加]からSPOリストを追加(既に追加している場合はこの手順は不要)。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem014-1024x705.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem014-1024x705.png)
そしたら適当なボタンなんかを追加して、こんな感じでOnSelectにPatch関数を入れてあげる。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem016.png)
- 第1引数:追加するSPOリスト(データソース)
- 第2引数:Defaults関数(引数には追加するSPOリスト)
- 第3引数:実際に追加するデータ(今回はタイトル列, 数字列, はい/いいえ列, 選択肢列の値)
※第2引数のDefaults関数はなくても動くっぽいんだけど、今回は公式に従ってきちんと入れておく。
Patch関数を設定したボタンを押してあげると、こんな感じでリストアイテムが追加される。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem017.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem017.png)
ボタンじゃなくてもよい
Patch関数を呼び出せればよいので、呼び出し元はもちろんボタンである必要はなくて、
例えばこんな感じでTimerを作ってあげれば、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem018-1024x516.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem018-1024x516.png)
1秒に1個SPOリストアイテムが追加される、世にも恐ろしいアプリができあがる。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem019-1024x607.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem019-1024x607.png)
ループとも組み合わせることができる
ForAll関数とSequence関数を使ったループからも呼び出せて、こんな感じの式をボタンのOnSelect関数に入れてあげれば、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem020png.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem020png.png)
Sequence関数で指定した数のSPOリストアイテムを作ることができる。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem021png-1024x647.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem021png-1024x647.png)
おまけ:Formコントロールでもアイテムの連続追加は可能
Patch関数の方が小回りはきくんだけど、Formコントロールでも連続アイテム追加は不可能じゃない。
SubmitForm関数で新規追加(編集も)するとき、参照される値はUpdateプロパティに設定されている値。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem022-1024x555.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem022-1024x555.png)
なのでUIが不要であればこんな感じでロックを解除して、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem023-1024x602.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem023-1024x602.png)
中のコントロールを全部消してしまって、Formを非表示にしても大丈夫!
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem024-1024x445.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem024-1024x445.png)
Updateプロパティでエラーが出てるけど、アイテムとして追加してあげたい値(今回はサンプルなんで固定値)を入れてあげればエラーも消える。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem025.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem025.png)
そしてボタンにさっきみたいなForAll関数とSequence関数、そしてSubmitForm関数とNewForm関数をこんな感じで設定し、ボタンを押してあげれば、
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem026-1024x620.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem026-1024x620.png)
こんな感じで大量のデータを一気に入れることもできる。
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem027.png)
![](https://ippu-biz.com/wp-content/uploads/2021/09/createitem027.png)
ただしPatch関数に比べるとかなり遅いw
コメント