【UiPath】Sharepoint リストアクティビティ追加機能 #2 Person or Group 列を使う

# SharePoint リストアクティビティの追加機能
UiPathのMicrosoft 365アクティビティでは、内包されるSharePoint リストアクティビティで2023年末に機能の追加がありましたので、内容をご説明したいと思います

**関連記事**
[#1 IDフィルタ機能](https://qiita.com/HirotakaTakehana/items/fbf0b5baa1ef1a75f9ef)

**UiPath関連でSharePointリストを扱っているもの**
[Sharepointのリスト操作をUiPathで自動化しましょう](https://qiita.com/mstgsg/items/af50ba5343b654ae9b7d)

# 前提
* これら機能を持つバージョンは、UiPath Studio 2023.10以降をサポートします
* Integration Serviceを利用する必要があります
* プロジェクトの種類で「Windows - レガシ」は非対応です

# SharePoint リストの列で「Person or Group」の値が取れるようになった
SharePointリストには、列の種類として「Person or Group」というものがあります。この列はAzure AD上のアカウント情報を取得し表示する列ですが、Microsoft 365 アクティビティ クラシックのSharePointリストアクティビティでは、ユーザーのID番号を値としてとる形となり、値を取得できませんでした

## 準備
SharePointリストを準備します。検証なので、簡単ですがPerson or Groupの列を1つ追加しただけのものです。この列は、「列の追加」で種別が「ユーザー」の列を選ぶことで作成できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/4b013e1e-5c47-2725-5200-ed9c8b067483.png)

追加後の外観です。User列がPerson or Groupです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/947b3fc1-a837-8c63-6e27-0e68af2955c7.png)

## 「アクティビティ」と「クラシックアクティビティ」
最新のMicrosoft 365アクティビティでは、Integration Service利用が前提のアクティビティと、旧来のWF内で認証処理も行うクラシック版の2種類が分かれて存在しています
アクティビティパネルの「連携」→「Microsoft]を参照すると、以下画面のように分かれて見えます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/01ac5fa8-3f6d-c946-b46c-557d42869aeb.png)

## 「クラシックアクティビティ」の挙動確認
クラシック版では、最初に「Microsoft Office 365 スコープ」アクティビティを配置し、その中に入れ子にする形で各処理を実装します。
今回は、まず「リストの情報を取得」アクティビティでリストの構造を取得し、「リストアイテムを取得」アクティビティでとったタイトル列とUser列をエクセルに張り付けてみました

サンプルワークフロー
(下記サンプルではMicrosoft 365アクティビティ バージョン3.4.3を使用しています)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/d0c1e672-37ec-1866-6288-73cb6b88707e.png)

### 結果を確認すると・・
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/86eb0852-89a8-3237-a287-2ff47be871f0.png)
User列の値が「368」となっています。この値はMicrosoft365側で持つアカウントのIDになり、この情報からユーザーを特定することは困難です。

## アクティビティの挙動確認
新しい「アクティビティ」では、認証はIntegration Serviceのコネクタを利用するため、「Microsoft Office 365 スコープ」は不要です。
Integration Serviceの準備方法や「リストアイテムを取得」アクティビティの説明については、以下の記事をご覧ください。
[#1 IDフィルタ機能](https://qiita.com/HirotakaTakehana/items/fbf0b5baa1ef1a75f9ef)

サンプルワークフロー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/13db3a30-7de7-b649-ec32-288bb6f208f7.png)

### 結果を確認すると・・
User列の値が正しく取得できています
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/5bd4fd4e-0866-e556-fd33-2599d635629d.png)

ちなみに、Person or Group列のデータは、表示されている値以外にも様々なアカウント情報を持っています。残念ながら、現時点では表示されているデータしか値として取得できませんが、リスト側で表示を切り替えることで、メールアドレス等を取得することができます。

SharePointリストの設定ボタンから「リストの設定」を選択し、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/c62a3c33-581d-1051-2aa3-a0d2fb272b9d.png)

次の画面で、設定を変更したい列を選び、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/ec6e6300-14e1-6b26-66dd-8bdb4be2ef23.png)

表示フィールドを「勤務先の電子メール」にしてみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/a65f8337-70ce-ed0b-489c-1f99c05af87e.png)

画面表示がメールアドレスになりました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/d33f2096-c8a3-3454-8bfe-90884f5f6e54.png)

サンプルワークフローを再実行すると、メールアドレスが取れました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3304259/662c062b-9270-799b-406b-ff6ca0b72c42.png)

# ユースケース
Person or Groupの列は、Azure ADのユーザー情報と連携しているため、仮にアカウントの情報がAzure AD上で変更された場合、リスト側を編集しなくても自動でアカウント情報が変わります。
こういった事情に備え、文字でメールアドレスや電話番号を設定せず、Person or Groupの列を利用したい場面があると思いますが、UiPath側で値としてとることができるようになり、利便性が向上したと思います。