Power Apps キャンバスアプリからSPOリストのアイテムを新規追加する方法2つ

Power AppsからSPOリストのアイテムを新規作成する方法について質問されたので、ここにメモ。

スポンサーリンク

前提

今回使用するリストはこんな感じ。
  • 文字列
  • 数字
  • はい/いいえ
  • 選択肢

の列があるだけのいたって普通のリスト。

このリストにPower Appsからアイテムを新規追加していく。

Formコントロールを使用する方法

まずはフォームコントロールを使用する方法。

[フォーム]から[編集]を選んで、
[データに接続] → [データの追加] → [SharePoint]を選択、
さっきのリストを選択。
そしたらさっき追加したフォームの[データソース]プロパティに追加したSPOリストを選んで、
フォームの規定モードを[新規]にする。
あとはボタンを追加して、OnSelectにSubmitForm関数を追加してやれば完成!
適当に値を入れて追加ボタンを押すと、
SPOリストにアイテムが追加される。

連続で追加したい場合

追加ボタンを押してSubmitForm関数を呼ぶと、フォームはこんな表示になる。
これは、「新規」モードのフォームにSubmitForm関数を呼ぶとフォームが「編集」モードになる、という仕様のため(FormMode.Editの値は0)。
「編集」モードのフォームに対して「何を編集するか?」(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

コメント

タイトルとURLをコピーしました