初めてのPowerAppsのアプリを作成（第3部）


第1部か第２部がまだ読んでいない方は、下記リンクからお願いします。

- [初めてのPowerAppsのアプリを作成（第1部）](http://qiita.com/firehouse-harris/items/bd0df78ac90c9e48336e)
- [初めてのPowerAppsのアプリを作成（第2部）](http://qiita.com/firehouse-harris/items/2a4fd5d9e3b483f97aa1)


## 目的
今まで、サポートメールを登録したり管理したりするアプリを作成しました。でも、元々の目的は重複に返事しないようにメールに担当者を付与することなので、今からメールの担当者を管理する機能を追加します。

## 担当者のフィールドを追加

まず、担当者のフィールドをエンティティに追加します。[PowerAppsウェブサイト](https://web.powerapps.com/)にサインインして、左側のメニューの`Common Data Service`の`エンティティ`のリンクをクリックします。第１部で作成した`サポートメール`のエンティティをクリックします。

![entities.png](https://qiita-image-store.s3.amazonaws.com/0/153003/4b09ca08-654e-dcc5-d06a-1af4c6665b42.png "entities.png")

サポートメールの画面で、`フィールドの追加`のボタンを押します。以下のように設定します。

- 表示名: `担当者`
- 名前: `Assignee`
- 種類: `テキスト`

![assignee-field.png](https://qiita-image-store.s3.amazonaws.com/0/153003/b9e096ea-6b5e-0a90-2186-90599c9817ab.png "assignee-field.png")

入力が終わったら、`保存`のボタンを押します。

## アプリを修正する

PowerApps Studioを開いて、前回保存したアプリの隣にある編集するボタン（鉛筆のアイコン）を押します。

![edit-app.png](https://qiita-image-store.s3.amazonaws.com/0/153003/bcdf5675-4df7-01d8-2d35-f9addf656b2a.png "edit-app.png")

エンティティを修正したので、一応データソースを更新します。`コンテンツ`のメニューの`データソース`のボタンをクリックして、右側のメニューでサポートメールの三点のメニューで`最新の情報に更新`を押します。

![update-source.png](https://qiita-image-store.s3.amazonaws.com/0/153003/bbf148d7-f3ea-737c-05d0-936e8c3f02eb.png "update-source.png")


左側のメニューで`SupportEmailDetails`の画面を選択して、受信日時や件名のカードを選択します。右側のオプションメニューに全部のフィールドが現れます。追加した担当者のフィールドがありますが、非表示されているので、担当者の目のアイコンを押します。

![assignee-card.png](https://qiita-image-store.s3.amazonaws.com/0/153003/9acff5bb-8602-ef01-b4b4-a62dd8740dcc.png "assignee-card.png")


そうすると、担当者のカードが表示されますが、件名の下に移動したいので、右側のオプションメニューの担当者の項目を件名の項目の下にドラッグします。

![move-assignee.png](https://qiita-image-store.s3.amazonaws.com/0/153003/8159ae81-427f-be4d-dd23-885520512f1d.png "move-assignee.png")

それから、画面の下にある`カスタムカードの追加`のボタンを押します。追加したカードを選択して、`挿入`のメニューで`ボタン`を押します。追加したボタンを選択して、右側の詳細設定メニューで以下のプロパティを編集します。

- Text: `"担当者になる"`
- X: `30`
- Width: `Parent.Width - 60`

ユーザーがこのボタンを押すとき、現在のユーザーはこのメールの担当者になることが欲しいので、`OnSelect`のプロパティに以下の値を与えます。

```
Patch(サポートメール,ThisItem,{Assignee: User().FullName})
```

以上の命令はボタンが押さられるとき、実行します。実行すると、このサポートメールの`Assignee`つまり担当者のフィールドに現在のユーザーの姓名を与えて、サポートメールのレコードを更新します。

`Patch`はエンティティなどを更新する関数です。`Patch`の参照は[こちら（英語）](https://powerapps.microsoft.com/ja-jp/tutorials/function-patch/)。レコードの全部のフィールドを更新したい場合は、[Update](https://powerapps.microsoft.com/ja-jp/tutorials/function-update-updateif/)の関数もあります。今回は担当者のフィールドだけ更新するので、`Patch`を使います。

Patchの引数
1. コレクション：エンティティやデータベースのテーブルなど
2. 更新するレコード
3. 更新するフィールドと値

`User`の関数は現在のユーザーを戻します。参照は[こちら（英語）](https://powerapps.microsoft.com/en-us/tutorials/function-user/)。

そして、現在のユーザーが担当者になった場合は、このボタンを無効にしてください。。右側の詳細設定のメニューでの`Disabled`のプロパティに以下の値を与えます。

```
ThisItem.Assignee = User().FullName
```

この項目の`Assignee`つまり担当者のフィールドが現在のユーザーの姓名と合っている場合、このボタンが無効になります。

PowerAppsの条件文では`=`、`>`、`<`、`>=`、`<=`、`<>`などの演算子が利用することができます。全ての演算子の参照は[こちら（英語）](https://powerapps.microsoft.com/ja-jp/tutorials/operators/)。

これで、`担当者になる`のボタンが完成です。

現在のユーザーはもうこのメールの担当者になりましたが、外したい場合のため、もう一つのボタンを追加します。以前追加したカードをまた選択して、挿入のメニューで`ボタン`を押します。

新しいボタンを選択して、以下のプロパティを編集します。

- Text: "担当者をリセットする`
- Fill: `RGBA(201, 48, 44, 1)`
- DisabledFill: `ColorFade(RGBA(201, 48, 44, 1), 50%)`
- X: `30`
- Y: `150`
- Width: `Parent.Width - 60`

このボタンが押されるとき、担当者を消したいので、`OnSelect`プロパティに以下の値を与えます。

```
Patch(サポートメール,ThisItem,{Assignee: ""})
```

そして、担当者がない場合、このボタンを無効したいので、`Disabled`のプロパティに以下の値を与えます。

```
IsBlank(ThisItem.Assignee)
```

`IsBlank`の参書は[こちら（英語）](https://powerapps.microsoft.com/ja-jp/tutorials/function-isblank-isempty/)。

これで、この画面は以下の感じになりました。

![with-buttons.png](https://qiita-image-store.s3.amazonaws.com/0/153003/8263d2cc-6ef9-c4a2-ec41-c800b6315604.png "with-buttons.png")


## アプリを試す

ファイルメニューで`保存`を押します。それから、ファイルメニューで`開く`を押して、アプリをクリックします。これで、パソコンでアプリを試してみることができます。

一つのサポートメールのアローアイコンをクリックします。作成した担当者の機能を試してみてください。

![test.png](https://qiita-image-store.s3.amazonaws.com/0/153003/36536836-198f-fb2e-c5ba-dc7bd5a15521.png "test.png")

## スマホで利用する

自分のスマホでPowerAppsアプリを使いたかったら、PowerAppsのスマホアプリが必要なので、以下のリンクでダウンロードしてください。

- [iPhone PowerApps](https://itunes.apple.com/us/app/powerapps/id1047318566?mt=8)
- [Android PowerApps](https://play.google.com/store/apps/details?id=com.microsoft.msapps&hl=en)
- [Windows Mobile PowerApps](https://www.microsoft.com/en-us/store/p/powerapps/9nblggh5z8f3#system-requirements)

ダウンロードしてから、アプリを開いてPowerAppsのアカウントにサインインしましょう。

![sign-in.png](https://qiita-image-store.s3.amazonaws.com/0/153003/930a2931-d7d5-c6da-be85-9c8c8c55dbd5.png "sign-in.png")

作成したアプリを選択します。

![select-app.png](https://qiita-image-store.s3.amazonaws.com/0/153003/205ce12e-53eb-a807-3511-cb0b95c2fe8e.png "select-app.png")

これで、自分のアプリはスマホで利用することができます。

![full-app.png](https://qiita-image-store.s3.amazonaws.com/0/153003/d8a9ca8f-0103-5659-e340-12f11d7fbe35.png "full-app.png")

## 他のユーザーにアクセスを付与する

一人しかこのアプリを利用できなっかたら、あまり役に立たないと思うので、他の社内のユーザーが使えるように組織に共有しましょう。

[PowerAppsのウェブサイト](https://web.powerapps.com)を開きます。左側のメニューの`アプリ`のリンクを押します。今回作成したアプリの三点のボタンを押して、出るメニューの`共有`のリンクを押します。

このページで他のユーザーとアプリを共有することができます。各ユーザーのメールアドレスで追加することができるし、組織の皆さんを追加することができるし。

組織と共有したいので、`組織と共有`のリンクを押して、`保存`のボタンを押します。

これで、組織のユーザーの皆さんが利用することができます。

## まとめ

ついにこの連続記事の元々の目標を達成しました。作成したアプリはサポートメールを全部記録して、そのメールはスマホアプリで管理することができます。そして、メールを重複に返事しないように、メールの担当者を付与することもできます。

この連続記事で初めてのPowerApps アプリを作成して、様々なPowerAppsの基本的な機能を利用しましたが、まだ使っていない機能がまだまだ残っているので、次回の記事でその機能を調べるつもりです。