【PowerApps】SharePointリストの選択肢をアプリから増やす方法【自己紹介アプリ】

## はじめに  
自己紹介アプリを作成していて、ユーザーが選択肢にない趣味を追加したい場合、どう実装すればいいでしょうか？  
例えば最近 **「筋トレ」** を始めたので趣味に登録したい場合、PowerAppsを使って簡単にSharePointリストの選択肢を増やせる方法を紹介します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/ff2e7857-3bd1-fa32-6a64-fbd8572fda04.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/ec0be134-48fc-10f8-f539-65fa6e53b61d.png)

---

## 完成イメージ  

1. **趣味を登録**：テキストボックスに新しい趣味を入力  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/b6203405-519e-8a43-8a56-7485bc41352c.png)

2. **保存**：左側のリストやComboBoxの選択肢に反映される  
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/5023504e-6abe-d1cf-a30e-f46ac985f20c.png)

3. **SharePointリスト**：追加された趣味が一覧に表示される  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/100ab7e2-d50d-a204-47b7-e6585e528486.png)
---

## 実装手順

### 1. SharePointリストの準備  

まず、自己紹介用の **SharePointリスト** を作成します。

| 列名 | 種類 |
| --- | --- |
| 名前 | テキスト |
| 趣味 | 選択肢（複数選択を許可） |

「趣味」列の選択肢は手動で初期値（例：料理、ゴルフ、散歩）を設定しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/c8130449-aab0-7673-9cc5-9ba06a8ec247.png)
---

### 2. PowerAppsの画面作成  

次にPowerApps上でUIコンポーネントを作成します。配置するコンポーネントは以下です。

- **Gallery2**：社員一覧を表示  （画面左）
- **ComboBox1**：既存の趣味選択肢を表示 （画面右上） 
- **TextInputCanvas3**：新しい趣味を入力  （画面右中央、趣味の登録の下）
- **ButtonCanvas1**：新しい趣味を保存  （更新ボタン）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/c5b78a15-2399-9976-17d6-a43e9fa9a2c4.png)

---

### 3. ComboBox1（既存趣味の選択肢）  

**Items** プロパティに以下を入力します。

```powerapps
Distinct(
    Ungroup(
        AddColumns(自己紹介DB, "AllChoices", 趣味),
        "AllChoices"
    ),
    Value
)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/b833b3de-96cc-223c-18b1-941c01c99c96.png)
## 解説

**AddColumns**：趣味の値を「AllChoices」という列に追加  
**Ungroup**：複数選択肢をフラットなリストに  
**Distinct**：重複のないリストを取得  

---



**DefaultSelectedItems** プロパティに以下を入力します。

```powerapps
Gallery2.Selected.趣味
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/6e993b4f-843e-b5e4-b29c-ce84d9d125f8.png)
## 解説

**Gallery2**：左の社員一覧  
**Gallery2.Selected**：左の社員一覧からクリックされた社員データ  
**Gallery2.Selected.趣味**：左の社員一覧からクリックされた社員データの趣味

---

## 4. ButtonCanvas1（保存ボタン）

**OnSelect** プロパティに以下を入力します。

```powerapps
Patch(
    自己紹介DB,
    Gallery2.Selected,
    {
        趣味: If(
            !IsBlank(TextInputCanvas3.Value),
            Table({Value: TextInputCanvas3.Value}) & ComboBox1.SelectedItems,
            ComboBox1.SelectedItems
        )
    }
);
Reset(TextInputCanvas3)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2524942/d2212931-25f1-e6ae-6ddc-dee2fba68abe.png)

## 解説

- **Patch**：選択中のレコード（`Gallery2.Selected`）に趣味を更新  
- **If**：入力欄が空でない場合、新しい趣味をComboBoxの選択肢に追加  
- **Reset**：入力欄をクリア  

## 動作確認

以下の手順で動作を確認します。

1. **新しい趣味を入力**：`筋トレ` と入力  
2. **保存ボタンをクリック**  
3. **Gallery2** に反映されることを確認  
4. **SharePointリスト** も更新されることを確認  

---

## まとめ

この方法を使えば、**PowerApps** のUIから **SharePointリスト** の選択肢を簡単に追加・更新できます。  
ユーザー自身が新しい選択肢を登録できるため、管理者の手間も軽減できます。

---

## おわりに

PowerAppsとSharePointを組み合わせることで、柔軟なデータ管理が可能になります。  
自己紹介アプリだけでなく、他のシナリオにも応用できるのでぜひ試してみてください！