Power Automate で SharePoint リストの列名（表示名）を取得して一覧化したい！できれば標準コネクタで！

# はじめに
ごきげんよう、百合宮桜（Miyu）です(≧▽≦)
突然ですが……SharePoint Lists の列名の一覧表がほしいなぁ……と思ったことはありませんか？？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/fe07118f-58cb-4b15-b0f0-ebb01f80576b.png)

私はあります！！ プレミアムコネクタを使わない方法だと殊更嬉しい！と思ったこともあります！！
Yes 推し活！ No Money ！！ なので(´・ω・`)

今日は同じように No Money な皆さんへ Power Automate でSharePoint Lists の列名（表示名）を一覧で取得する方法を伝授します。

# 全体像
SharePoint に HTTP 要求を送信します アクションを利用します。ここは少しAPI知識が必要です。分からない方は分かる人と一緒にやりましょう♪

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/4698b0a8-ace5-45b1-a33a-1f9493073f4f.png)

SharePoint REST API のドキュメントはこのあたりです👇

https://learn.microsoft.com/ja-jp/sharepoint/dev/sp-add-ins/working-with-lists-and-list-items-with-rest

ただ、私が使っている URI についての記載はありません。野生の勘が冴えわたっただけです。

さて SharePoint に HTTP 要求を送信します アクションでの取得結果に話を戻します。このアクションで後述するURI を指定すると列のメタデータが配列形式で取得できます。

```

{
                "AutofillInfo": null,
                "AutoIndexed": false,
                "CanBeDeleted": false,
                "ClientSideComponentId": "00000000-0000-0000-0000-000000000000",
                "ClientSideComponentProperties": null,
                "ClientValidationFormula": null,
                "ClientValidationMessage": null,
                "CustomFormatter": null,
                "DefaultFormula": null,
                "DefaultValue": null,
                "Description": "",
                "Direction": "none",
                "EnforceUniqueValues": false,
                "EntityPropertyName": "ContentTypeId",
                "Filterable": true,
                "FromBaseType": true,
                "Group": "ユーザー設定の列",
                "Hidden": true,
                "Id": "03e45e84-1992-4d42-9116-XXXXXXXXXXXX",
                "Indexed": false,
                "IndexStatus": 0,
                "InternalName": "ContentTypeId",
                "IsModern": false,
                "JSLink": null,
                "PinnedToFiltersPane": false,
                "ReadOnlyField": true,
                "Required": false,
                "SchemaXml": "<Field ID=\"{03e45e84-1992-4d42-9116-XXXXXXXXXXXX}\" RowOrdinal=\"0\" Type=\"ContentTypeId\" Sealed=\"TRUE\" ReadOnly=\"TRUE\" Hidden=\"TRUE\" DisplayName=\"コンテンツ タイプの ID\" Name=\"ContentTypeId\" DisplaceOnUpgrade=\"TRUE\" SourceID=\"http://schemas.microsoft.com/sharepoint/v3\" StaticName=\"ContentTypeId\" ColName=\"tp_ContentTypeId\" FromBaseType=\"TRUE\" />",
                "Scope": "/sites/SiteName/Lists/ListName",
                "Sealed": true,
                "ShowInFiltersPane": 0,
                "Sortable": true,
                "StaticName": "ContentTypeId",
                "Title": "コンテンツ タイプの ID",
                "FieldTypeKind": 25,
                "TypeAsString": "ContentTypeId",
                "TypeDisplayName": "コンテンツ タイプの ID",
                "TypeShortDescription": "コンテンツ タイプの ID",
                "ValidationFormula": null,
                "ValidationMessage": null
            }

```


その中の Title というものが列の表示名ですので、Titleだけを JSONの解析 → 選択 で配列化すると一覧表チックにできるよということです。

# 作成方法
1. SharePoint に HTTP 要求を送信します アクション を追加します

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/6fac2fa4-4ee9-4671-abd2-f5750be82a60.png)


2. 画像のように設定します

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/c475d97e-205c-429d-9e0d-b63d731f080f.png)

    ```
    _api/web/lists/getbytitle('{SharePoint Lists の名称}')/fields
    ```

    :::note Info   

    あとでスキーマの生成に利用するので、ここで1回テスト実行をしましょう！    
    
    :::

3. JSON の解析アクションを追加します

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/731bcceb-0789-4f34-a070-10898b41dd31.png)

4. テスト実行結果から SharePoint に HTTP 要求を送信します > 出力 > body をコピーします

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/b02ebd29-d2c6-4cfd-b842-3abe042f9908.png)

5. サンプルペイロードを使用してスキーマを生成するをクリックします

   ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/f4bd28e0-d059-4158-888f-dad091d4256c.png)

6. 4 でコピーしたものから body: まで除外したものを貼り付け、完了をクリックします

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/8f17b7da-4e27-4ca2-8126-0bffe0a87f66.png)

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/d0ae86e5-577e-4e3e-812d-63a7748a83a6.png)

7. スキーマが自動で生成されます

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/0363c73f-7385-4b66-ad92-369c22ff6b86.png)

8. 選択アクションを追加し、元 に JSON の解析 > Body Value を入れます

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/6cb998d9-79af-4989-b897-5879e7f80818.png)

9. マップの左側は一覧化した時に自然な列名を入れます

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/f07f1f14-f3fe-4c29-a943-6b1c0f20c7ad.png)

10. マップの右側は JSON の解析 > Body Title を入れます

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/923d75bf-b7dc-4a7b-8068-86fdea1cb154.png)

これで完成です。
表示名という列に指定したリストの列名が格納された配列ができました！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3032705/fe07118f-58cb-4b15-b0f0-ebb01f80576b.png)

あとは煮るなり焼くなり、HTMLテーブル化してメールに入れ込むなり、CSV化してメールに添付するなり……ご自由にどうぞ☆彡

# 終わりに
今回はかなりムズカシイ内容を取り上げました！
市民開発で非IT従事者がここまでやってしまうと引継ぎ時に混乱を極める場合が多いです。
他の人に引き継げるレベルのフローかな？という観点をもって、判断されることを強くお勧めいたします。

最後にオタクのよくわからないつぶやきにアドバンスくださった、やまさんありがとうございました！！

https://x.com/yamad365/status/1901635806705635639?s=46&t=AIFQZrjOaxenwfLOhiiqqw

Power Apps でも同じように動かせそうかはこれから検証します(´・ω・`)
それではごきげんよう♪