例えばSharePointにこんなリストがあったとして、
[担当者]列が[ユーザーまたはグループ]だったとき、
Power Appsからこのリストにアイテムを追加するにはどうしたらいいんだろう、と困ったときのお話。
パターン1:DataCardを使用する
このリストに対してカスタムフォームを作成すると出てくるのがこの方法
こんな感じでドロップダウンになっていて
入力も検索も可能。
これがドロップダウンのItemsプロパティで、後半の「xx62c5__…」は「担当者」の文字コード。
DataCardのUpdateプロパティはこんな感じ
こんな感じで設定してやれば、SharePointリストのユーザ列に値を設定できる。
では、ここからが今日の本題。
DataCardを使わず、メールアドレスから直接[ユーザーまたはグループ]列に値を設定したい場合はどうすればよいのだろう。
Patch関数を使用
まず、データの追加にはPatch関数を使用する。コネクタからSharePointを選択して、目的のリストを選ぶ。
そしたらOnSelectみたいなところで、Patchを呼び出してあげるとSharePointへアイテムを追加できる。
Patch( testListCopy, Defaults( testListCopy ), { タイトル:"title" });
1つ目の引数「testListCopy」は今回追加するSharePointのリスト名。
2つ目の引数「Defaults( testListCopy )」のDefaultsは新規作成の意味と思ってもらえれば。
そして3つ目の{と}の間が追加したいアイテムの情報。今回は「タイトル」列だけに値があるリストアイテムを作成。
それではこれに[ユーザとグループ]列の値を追加するにはどうすればよいか?
こんなコードになる。
Patch(testListCopy, Defaults( testListCopy ), { タイトル:"title", 担当者: { Value:"メールアドレス", '@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser", Claims: "i:0#.f|membership|" & Lower("メールアドレス"), Department: "", DisplayName: "", Email: "", JobTitle: "", Picture: "" } });
いきなり長くなるが、ユーザ列にはこれらすべてのオブジェクトを入れる必要がある。
「メールアドレス」と書いてある2か所に追加したユーザのアドレスを設定すれば、ユーザーとして登録される。
DepartmentやDisplayNameなどは設定しても何も変わらないのだが、必須項目。
それらのプロパティに値を設定する方法はあるのかもしれないが、今のところ見つけれていない。
コメント