Power AutomateでSharePoint列の値を更新するアクションの仕様について

この記事は[Office 365 Advent Calendar 2019](https://adventar.org/calendars/3960?fbclid=IwAR34KNg6tJ2U8_YFLB6XiVJckjbxbLkqN9dqU1IiJi83F1DYvmZtntLV_Yg)に参加しています。
今日のOffice 365 Advent Calendarが空いてたので備忘も兼ねて書きます。

---

この記事ではSharePoint列の値を更新するアクションの仕様について、私が経験した範囲内で書いていきます。
(2019年12月5日現在)

記事内で出てくるSharePointの列の種類については、以下のMicrosoft Docsをご確認ください。
[リストおよびライブラリの列の種類とオプション](https://support.office.com/ja-jp/article/リストおよびライブラリの列の種類とオプション-0d8ddb7b-7dc7-414d-a283-ee9dca891df7)

#SharePoint列の値を更新するアクション
Power Automateには**SharePoint列の値を更新するアクション**が幾つかあります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/8f03c0f9-140a-a6d0-e8f8-756bd1357984.png)

よく使うアクションはこの辺りですね。
[ファイルのプロパティの更新](https://docs.microsoft.com/ja-jp/connectors/sharepointonline/#update-file-properties)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/362c2a7e-5c26-b941-ef73-1b46feebd803.png)
[項目の更新](https://docs.microsoft.com/ja-jp/connectors/sharepointonline/#update-item)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/9d2fb170-d9ef-f581-95b2-a4d3ebaebb9f.png)
Power Automateでこれらのアクションを使うと以下のような画面が立ち上がので、ここでSharePoint側をどう更新したいか設定していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/54098693-7015-6c3c-8bcb-f79c13d00bed.png)
今回のお話は、**この画面の仕様について**書いていきます。

##ボックスが空欄なら値は上書きされない
**列のボックスが空欄であれば列の値は上書きされません。**
以前の値が残ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/74da2a99-6a1e-a11d-3ff7-eaa023335954.png)
このフローを実行したBefore/Afterは以下の通り。
列「2Column」には**元の値が残ったままです。**
###Before
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/23278bec-afea-1916-8692-72afe9e2a690.png)

###After
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/23278bec-afea-1916-8692-72afe9e2a690.png)

##必須列のボックスには必ず入力が必要
SharePointで列を作る際に**「この列に情報が含まれている必要があります」をONにしていると**、入力必須の列として扱われます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/defef624-bd27-6ffe-7f5e-d9d5926db55c.png)

**この必須列のボックスは空欄に出来ません。**
空欄だとエラーが出て、作成したフローが保存出来なくなります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/000d685f-8cfb-9c3b-089d-5c198133feba.png)
**前述の「何も割り当てなければ上書きしない」と矛盾する仕様なので注意してください。**

##必須列なのに*マークがつかない事がある
通常であれば**必須列に\*マークがつきます。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/000d685f-8cfb-9c3b-089d-5c198133feba.png)
しかし、SharePointの列の種類によっては**必須列でも\*マークが表示されません。**

###起こる条件
私が経験した限りでは2パターンあります。

####1.複数選択を許可
以下の列の種類で**「複数選択を許可」をONにしている場合に発生します。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/ec75b97c-c7dc-b0cf-b887-b530a61dc41b.png)
#####問題が起こる列の種類
1. 選択肢
2. ユーザーまたはグループ

####2.特殊な種類の列
以下の列の種類では必ず発生します。
#####問題が起こる列の種類
1. 参照
2. 管理されたメタデータ

##列の値をクリアするにはnullを使う
**列の値をクリアするにはnullをボックスに入力します。**
入力は列のボックスをクリックした後、右側に出てくるメニューから式を選び、`null`と入力してOKを押すだけです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/087bed12-561d-23df-169c-ab4b3e41d325.png)

##必須列をnullでクリアできる
**nullはエンドユーザーが必須列の値を手軽にクリアできる唯一の手段です。**

例えばこのようなリストがあります。
列「必須列テスト」は必須列です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/41796979-e6d9-fab0-e67e-a478641219d6.png)
このリストに対し、列「必須列テスト」をnullで上書きするフローを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/c38022e4-26e0-5109-25f7-bb14fc2d1f39.png)
するとフローが正常に完了し、**列「必須列テスト」がクリアされました。**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/313502/f4687fbe-11e5-2677-e47c-4a0d39dac87f.png)

余談ですが、Power AutomateのSharePointアクション「項目の作成」でも同様にnullを使う事で、必須列が空欄のアイテムを作成できます。

#まとめ
- **ボックスに何も割り当てなければ上書きしない**
    - 一々全部のボックスを入力する必要はありません。
- **必須列には必ず入力する**
    - 面倒でも現在はこれがルールです。
- **必須マークは完璧ではない**
    - \*マークが表示されない列が必須列かどうか、必ずSharePoint側も確認しましょう。
- **nullは非常に便利**
    - 現在、エンドユーザーが手軽に必須列をクリアできる手段はこれだけです。

私もIgnite The TourTokyo行きたいなー…(´・ω・｀)