Power Apps自分用チートシート



### ユーザー名表示

User().FullNameだと「たろう　やまだ」のように組織で登録している表示名と異なった表示
（Yamada, Taro表記でOffice365のサービスでは統一されているのに）になって不便なことがあります。
※Azureに詳しくないからなぜかまで調べていません、ごめんなさい m(_ _)m


サインインしているユーザー名を表示したい場合、以下の式をTextに設定したりします。
（場合によっては内部で独自に変数名を用意してサインインユーザー表示に利用することもあります。）

```
Office365ユーザー.MyProfileV2().displayName
```


### 角丸罫線

Power Appsでは四角形オブジェクトやラベルを配置しても詳細設定のデザイン内に
PowerPointのオブジェクトのようにいい感じに角丸に黄色い✦を操作するアレ
に対応したプロパティ変更項目がありません。

角丸設定をできるのは
・Image（罫線ではありませんが..）
・Button
・Text Input
に限られているようです（2022/4/27時点）

これらには
RadiusTopLeft
RadiusTopRight
RadiusBottomLeft
RadiusBottomRight
があり、1以上の数字を入力することで角を丸めることができます。

Image（例：プロフィール画像）について円の形にする場合
* 高さと横幅を同じ数字
* ImagePositionを「画面サイズにあわせる」

としないと丸くならなかったので注意が必要です。
高さ50横幅80になっていたりもともとの画像がバラバラだときれいな円になりません。


### 配列

#### アプリの中で処理用の配列を作る

#### 配列の要素を抜き出す

先頭の要素指定
```
First(hogehogelist).Value
```

途中の要素指定

hogehogelistの２つ目の要素
```
Last(FirstN(hogehogelist,2)).Value
```


### 相対位置の図解がイメージがわきます

https://qiita.com/h-nagao/items/18d6919790a747bd34b0

### コンテナーって何？

https://ippu-biz.com/development/powerplatform/powerapps/container/


### コントロールとプロパティがまとまってるところ

https://docs.microsoft.com/ja-jp/power-apps/maker/canvas-apps/reference-properties



### 1回のSubmitでN個分のレコードを作成したい

#### コレクションの初期化・アイテム追加について
ようさん（よーよんさん）のyoutubeにあげている解説動画がわかりやすかったです

https://youtu.be/bguYJsajPyg

#### コレクションからアイテムを削除する（例：ゴミ箱アイコンを配置しOnSelectプロパティに式を記述する）
```
 Remove（コレクション名,ThisItem）
```

#### 変数定義

https://sinyblog.com/powerapps/powerapps_variable/


#### CountRows（Galleryの個数を見たいときに）

https://docs.microsoft.com/ja-jp/power-platform/power-fx/reference/function-table-counts

```
IF(CountRows(ギャラリー.Allitem)>0,"1つ以上アイテムがあるときの処理")
```

### 日付の加算（例：５年後の日付をアプリ側で設定する） 

https://docs.microsoft.com/ja-jp/power-platform/power-fx/reference/function-dateadd-datediff


### 日付の表示形式

https://ippu-biz.com/development/powerplatform/powerapps/text-date/


### ユーザー（SPOリストの個人）列へテキスト入力欄の値をPatch関数で登録する

例）SPOリストにユーザ列（ユーザ（個人またはグループ））がある
　　Patch関数でレコード追加をするケース

ここでEmailを用いたかったので
 ．．．
 User: Office365ユーザー.MyProfileV2().mail,
 ．．．
と記述したところ、
「問題点 この引数'User'の型は必要な型’Record’と一致しません。見つかった型'Text'」
のエラーメッセージが表示されました。(2022/8/26現在)

データカードを利用していた場合はデータカードのSelectedでレコードの追加ができたのですが、
ユーザをテキスト入力欄に設定させるフォームでレコード追加をしたい場合は以下の対応が必要なようです。

1.　あらかじめアプリの利用者情報をコンテキストに設定

```
UpdateContext({コンテキスト名: Office365ユーザー.MyProfileV2()});
```

2.　Patch関数での式の記述はSPOリストのユーザ列のプロパティを再現する
```
            User:{
                Claims:  "i:0#.f|membership|"&コンテキスト名.mail,
                Department: "",
                DisplayName: "",
                Email: "",
                JobTitle: "",
                Picture: ""
            },
```

#### Patch関数

https://docs.microsoft.com/ja-jp/power-platform/power-fx/reference/function-patch

https://ippu-biz.com/development/powerplatform/powerapps/createitem/

### LookUp関数（ラベル表示やラベルでボタン隠しに使ったり）

https://qiita.com/negimijin/items/6d189cdb6d861e33b018

### コンポーネント

ヘッダーやフッターを作るときにあらかじめコンポーネントにしておくと各画面に配置するだけで済みます。
ヘッダーやフッターを作成する場合、縦もしくは横幅をアプリの画面サイズに合わせることになりますので
以下を記述します。

幅 = Max(App.Width, App.DesignWidth)
高さ = Max(App.Height, App.DesignHeight)

### Galleryパーツと列のプロパティ判定を利用したフォーム作成で時短！

このやり方、もっと早く知りたかった

https://www.youtube.com/watch?v=wQqetH2QLyk


### PDFを出せるだと。。？！

https://mofumofupower.hatenablog.com/entry/gen_pdf_jp?fbclid=IwAR2SO3qkkwGBLHo2B1cbdy1w8G8UcydLUTccNcm4xvegpe94D_lGL7AP9iM