SharePoint Lists の選択肢・ユーザー・参照列を使ったコンボボックスに既定値を設定する

# はじめに
ごきげんよう、百合宮桜です。
今日は Power Apps のコンボボックスに既定値を設定する方法を紹介します。

# 既定値について
## 既定値とは？

コンボボックスが表示されたときにすでに入っている値のことです。初期値とも言います。
例えば有給承認アプリのコンボボックスなら、最初から「承認」が既定値として入っていれば、却下や差し戻しの時だけ値を変更すればよく、効率的です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/03ae2899-404a-ab1c-1282-b6920ebb8537.png)

## 既定値の設定場所

Power Apps のコンボボックスでは「DefaultSelectedItems」プロパティに式を追加することで、既定値を設定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/da3c9ab7-a961-05c0-9965-df5f607e6ca4.png)

画像のように Fx 欄が空白の状態だと、何も設定されていないので「既定値がない」ということになります。

# 選択肢列の場合
1. Items プロパティに選択肢列の選択肢が入っていることを確認します

    ```
    Choices(データソース名.列名)
    ```

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/959fe602-cd77-5553-4436-690794cf4e47.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/61d52012-5b21-11a8-f327-fbf706a113ba.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/31b53dee-1f95-9b9a-5af5-8a455c73e97a.png)

2. DefaultSelectedItems プロパティを以下のように変更します

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/47b5e1cb-f9ff-29d1-2f68-8ba65e699e98.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/d2ee28a4-3d3d-4da6-6801-b16835e25754.png)


    ```
    Choices(データソース名.列名,"既定値にしたい選択肢の名称")
    ```
    ※既定値にしたい選択肢の名称は必ず””(ダブルクォーテーション)で囲ってください

3. 既定値が入るようになりました

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/10e94c3b-dbe6-6f78-775f-9b35b688d7d4.png)


# ユーザー列の場合
今回はアプリを操作しているユーザーの名前が既定値に入る方法を説明します。

1. コンボボックスの Items プロパティにユーザー列が入っていることを確認します

    ```
    Choices(データソース名.ユーザー列の列名)
    ```
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/e92f3580-6987-9564-2db4-4caeb07d849b.png)    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/44a0715c-f7b1-c485-2693-7c4aed666d32.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/bcf08a23-598b-7b62-9854-e5c3032cbac7.png)

2. データソースに「 Office 365 ユーザー」を追加します

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/f09067fe-fc86-f76a-cca8-ac63b834c01a.png)

3. コンボボックスの DefaultSelectedItems プロパティを以下のように変更します

    ```
    {DisplayName:Office365ユーザー.MyProfileV2().displayName}
    ```
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/0d7902cd-fb45-a9bf-2d22-ad9c7d76405c.png)

    ※今回はフィールドの「主要なテキスト」が DisplayName なので、それを表示する設定にしています。Email など他の項目を表示したい場合は式の赤枠の部分を変更してください

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/c29e6ff2-c081-45c7-5d86-f6d341cd424d.png)

    変更する項目名はフィールドの「主要なテキスト」で選択したものに合わせます。

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/779ffdc9-23ee-524d-cb8a-63144a809b1b.png)

4. 自分の名前が既定値に入りました

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/b711e9d5-1b37-c3fa-64e6-0a1523985f04.png)

# 参照列の場合
1. データソースに参照元の SharePoint Lists があるのを確認します

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/bf5bd288-07fc-5fe7-1e1a-91c0440ec3b7.png)

    ※参照元とは「ソースとしてリストを選択」で選んだリストのことです

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/fdfe558b-0d05-73a9-0843-a34ebfe79500.png)

    私はこのようなシンプルなリストを参照元として利用しています。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/53c7e583-ae3a-53ef-d1bf-06a601fb51fb.png)


2. コンボボックスの Items プロパティに参照列が入っていることを確認します

    ```
    Choices(データソース.参照列の列名)
    ```

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/94fa54cd-e05a-efc6-c2a8-564cc5b884c1.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/f8f2947c-a602-3638-8ef1-56899e4ef241.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/d73ab091-aaab-938c-09cf-bba9b832e08f.png)

3. DefaultSelectedItems に以下の式を入力します

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/a5d4e46e-15e9-434d-36b9-d3cf806310df.png)

    ```
    With(
    //参照元から既定値にしたいデータをLookUp 関数で抽出し、DefaultRec に格納
    {
        DefaultRec:LookUp('2024M365CC_RequirementMaster',要件名="宅配・納品")
    },

    //参照列の配列を作成
    {
        '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference", 
        Id:DefaultRec.ID,
        Value:DefaultRec.要件名
    }
    )
    ```

    :::note info
    **With 関数でメンテナンス性を高める**
    With 関数を利用して、名前付きレコードを設定することでコードの読みやすさやメンテナンス性を高めることができます。
    https://learn.microsoft.com/ja-jp/power-platform/power-fx/reference/function-with

    :::

    :::note info
    **配列だけを入れ込む場合のサンプル**
    With を使わない場合はこのように配列だけを入れ込んでください。
    参照列は Id と Value のセットで構成されているので、この2つをもれなく設定するのが大事です。

    ```
    
    {
        '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference", 
        Id:LookUp('2024M365CC_RequirementMaster',要件名="宅配・納品").ID,
        Value:LookUp('2024M365CC_RequirementMaster',要件名="宅配・納品").要件名
    }
    ```

    :::

4. 「宅配・納品」が既定値として表示されました

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/56c8fc7d-b0b0-304c-ad58-10f0e165964e.png)


# おわりに

列の種類によって既定値の入れ方は様々です。
算数の公式や英単語のようなイメージで、うっすらと暗記しておくとできることの幅が広がりますね(≧▽≦)
それでは皆さん、ごきげんよう！