Office365UsersコネクタのUserProfile_V2で取得できる「隠し項目」

こんにちわ。所属がサークル名になってるけど、FJ-WAN内にアカウントを持っている人です。
~~約６年ぶりの投稿……~~

ここ最近は**DSPU**に異動したりしました。

さて、今回は掲題の通り、**PowerAutomate**です。
便利ですよね、PowerAutomate。ずっと開発畑の肥やしだった私も今ではすっかり楽をしてしまっています。

そんなPowerAutomateで良く使うコネクタの一つである「**Office 365 ユーザー**」の**隠し項目**(:thinking:)について、今回どうやって使うのかとか何ができるのかとかつらつら書いていこうと思います。

# おことわり
:::note warn
PowerAutomateを利用するにあたり、**必ず所属組織のポリシーや利用にあたっての制限事項を確認し、それを遵守してください**。
:::

:::note alert
**あなたが本記事の内容を利用したことによって被った損害を、著者は一切補償できません。**
:::

PowerAutomateは割と何でもできる反面、とても強い機能なので、組織のよってはガッツリ利用制限が掛かっていることが予想されます。
無断で利用すると懲戒になったりするかもしれません。よく確認したうえでご利用くださいね。


# 「隠し項目」について
## そもそも隠れているわけではないが……
ここでいう「**隠し項目**」とは、**PowerAutomateのデファクトスタンダードでは使えない**（**取れない**）**項目**という意味です。
有体に言えば、API仕様書[^doc1]には書いてあるが、コネクタリファレンス[^doc2]には書いてなくて、PowerAutomateからも普通のやり方では参照できない項目のことです。

## そんな項目、どうやって取るの？
「**詳細パラメータ**」を表示したときに出てくる「**フィールドの選択**」に、API仕様書[^doc1]の項目名をカンマ区切りで書くと取得できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158353/75d5ec33-3b55-3a43-86cb-9bc4cc907d03.png)

:::note warn
ここで項目を指定すると、**その項目以外取ってこなくなります**。
別途コネクタのスタンダードで取れる項目を使いたい場合は、アクションを分けるなどした方がいいかもしれません。
:::

# 利用可能な項目
Microsoft Graph APIの仕様書[^doc1]を見る限り、77個くらいあります。
これらのうち、使えそうなものをピックアップしてご紹介したいと思います。

| 項目名 | 型 | 公式の説明(日本語訳) | 著者注釈 |
|:--|:-:|:--|:--|
| accountEnabled | Boolean | アカウントが有効な場合は true、それ以外の場合は false<br />このプロパティは、ユーザーの作成時に必須です | アカウントが有効かどうかを見る時に便利そう |
| ageGroup | ageGroup[^doc3] | ユーザーの年齢グループを設定します<br />許可される値: null、Minor、NotAdult、Adult | 成人向けコンテンツがある場合のチェックとかに使うのかな？ |
| assignedLicenses | assignedLicense[^doc4] collection | ユーザーに割り当てられているライセンス (継承された (グループベース) ライセンスを含む)<br />このプロパティは、直接割り当てられたライセンスと継承されたライセンスを区別しません | ユーザーに対して**無効**になっているOffice 365製品の**GUID**が取得できる<br />無効になっているものの一覧というのが厄介だけど、[ここの内容](https://learn.microsoft.com/en-us/entra/identity/users/licensing-service-plan-reference)をJSONかなんかにしてうまく使えば有効の一覧は取れそう |
| lastPasswordChangeDateTime | DateTimeOffset | この Microsoft Entra ユーザーが最後にパスワードを変更した日時、またはパスワードが作成された日時 (最新のアクションが実行された日付)<br />日付と時刻の情報はISO 8601形式を使用し、常にUTCです | 最終パスワード変更日から何日経ったら通知とかに使える（~~うざいけど……~~） |

全部内容確かめてみたけれど、ざっくり使えそうな感じなのはこのくらいでした。
もちろん組織によっては、中に詳細なデータが入っていることもなきにしもあらずなので、**実際のデータはキミの目で確かめてくれ！**（**~~ファ○通並感~~**）

# 取得した後の使い方
せっかく隠し項目を取得したのですから、後続のフローで使いたいですよね。
しかしながら、コネクタの標準では、「**動的なコンテンツ**」での**隠し項目**へのアクセス方法が用意されていません。
従って、次のような記述を関数入力モードで入力する必要があります。

```function
outputs('【アクション名】')?['body/【取得したい隠し項目】']
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/158353/d197c6db-5f06-34c5-3402-52f736ecf2dc.png)

:::note
この記法は通常の「動的なコンテンツ」を関数モードで選択入力しても得られます。
コピペが面倒だったら、適当な「動的なコンテンツ」を選んで、直接手直しするのがオススメです。
:::

[^doc1]: [Microsoft Graph API V1.0](https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties)
[^doc2]: [Office 365 Users リファレンス](https://learn.microsoft.com/ja-jp/connectors/office365users/#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC-%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B-(v2))
[^doc3]: [Age Group](https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#agegroup-values)
[^doc4]: [AssignedLicense](https://learn.microsoft.com/en-us/graph/api/resources/assignedlicense?view=graph-rest-1.0)