追加出費なく使える範囲でPower Platformを使い倒すため、データソースをSharePointリストだけで頑張る方法を調べました。
Power Appsのフォームコントロールで「個人」型データを指定する
編集フォームでリストに書き込む
フォームで個人型に対応する値をメールアドレスなどから構成する場合は、対応するカードのUpdateやDefaultを以下のように指定します。
{
Claims: "i:0#.f|membership|" & User().Email,
DisplayName: User().FullName
}
Patch関数でリストに書き込む
Patch関数の更新で個人型のレコードを書き込む列名に対して、以下のような値を指定します。
Claimsにメールアドレスが正しく入ってれば、Displynameはじめほかの値は適切な値に置き換えてリストに保存される模様。
{
Value:"",
'@odata.type':"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
Claims: "i:0#.f|membership|" & Lower(User().Email),
Department: "",
DisplayName: "",
Email: "",
JobTitle: "",
Picture: ""
}
Power Appsで取得した画像をAutomateを経由せずにリストに格納する
詳細はリンク先を参照
画像をJSON形式で扱うことで、リストの複数行テキスト列に格納できます。この方法であれば、SharePoint内に画像ライブラリや画像の保存フォルダを用意する必要がありません。
画像を文字列で扱えるといっても、フォームコントロールを介してリストにデータを送ることはできません。代わりに、Patch関数またはCollect関数でSharePointリストにアイテムを追加します。
JSON形式で画像を扱うとき
JSON関数に画像を読み取るコントロールのphotoやimageプロパティを渡します。ここでは、グローバル変数ImageJsonにカメラコントロールCamera1で取得した画像を設定するコードを紹介します。
Set(
ImageJson,
JSON(Camera1.photo,IncludeBinaryData)
);
SharePointリストに投稿するとき
JSON形式の画像ImageJSONをSharePointリストの複数行テキスト列GAZOに格納します。Patch関数を使った場合は次のようになります。
Patch( リストの名前,
Defaults( リストの名前 ),
{ Title: "タイトル列の値",
GAZO: ImageJSON
}
)
JSON形式で格納された画像を表示するとき
複数行テキスト列の値を読むと、ダブルクォーテーションで囲まれた文字列が返ります。このダブルクォーテーションを除去する操作をします。画像コントロールなどのimageプロパティに以下のような設定を行います。
ここではリストの2番目のレコードのGAZO列の値を表示します。
Substitute( Index( リストの名前, 2).GAZO,"""","")