PowerPlatformの制限③

記事
IT・テクノロジー
SharePointリストで「ユーザーまたはグループ」の項目を作成し、PowerAppsでプルダウン表示させてユーザーを選ばせる…あるあるだと思います。
しかし、どうしても解せない制限がここにありました。

なんと、一度値を更新したユーザーまたはグループの項目は、PowerAppsからでは空に更新できません。

つまり、空白からAさんを選択したり、AさんからBさんに変更して更新は出来るのですが、Bさんから空白に戻すことは出来ないのです。
しかもプルダウンを空白にして更新した場合エラーにはならず、あたかも正常に更新できたように見せかけて、実は更新されていませんという…
If文でUpdate式を空白にしたり、Patchで空白にしたりと色々試したのですが、これだけはPowerAppsからでは不可能でした。
マイクロソフトさぁん!?

何とか空白に戻す処理を入れたい、ということで、今回はPowerAutomateを使ってユーザーまたはグループの項目を空白にしたいと思います。

まずは、PowerAppsでユーザーまたはグループの項目を空白にしたかどうかの判断をするため、別途項目を用意します。
ここはチェックボックスでも、一行テキストでも構いません。PowerAutomateでユーザーまたはグループの項目を空白更新するにあたり、条件分岐で使用する項目となります。PowerApps上では非表示にしてしまっても良さそうです。
無題1.png
今回は、一行テキストの「名前」という項目を用意してみました。
Defaultの値に、ユーザーまたはグループの項目が入っている場合はそのDisplayNameを表示するという式を入れておきます。
If(
    IsBlank(DataCardValue7),
    "",
   DataCardValue7.Selected.DisplayName 
)
こんな感じ。

次はPowerAutomateで、「名前」の項目が空白の場合に、ユーザーまたはグループの項目を空白に更新する、という処理を作っていきます。
SharePointリストの更新は専用のアクションがあるのですが、今回のケースはREST APIを使用する必要があります。
アクション名だと「SharePointにHTTP要求を送信します」という名前になっていると思います。
こんな感じでしょうか。
無題2.png

肝になるのはREST APIのボディ部(JSON)です。
"ユーザーまたはグループの項目名StringId":"",
"ユーザーまたはグループの項目名Id":-1
StringIdを空白。Idを-1に。ここの解説入れると長くなるので、一旦おまじないとして飲み込んでください。
方法をPOSTとすることで、指定のリストへ項目の更新を行うことができます。リスト名や項目名が日本語の場合は文字列がOData形式になっている可能性があるので、EntityNameを使用してくださいね。

分かりやすく解説するつもりが、途中どうしても分かりにくい単語が出てきてしまいました…PowerPlatformは「こんなことできるんだ~」をふわっと理解して、徐々に慣れていくのが大切だと思います。
そしてPowerPlatform初心者という方には、もし出来ると分かっていても全部やらなくていいのでは?という感覚を持ってみてください、とお伝えしたいです。
今回のケースだと「一度入力した名前を空白にするのは運用回避で!」とゴリ押しできるか確認しても良いと思います。あれば便利ですが、理解と労力に見合う処理なのか?というのは微妙なとこだと思うので…

今日はここまで!
もしPowerAutomateやPowerAppsでご相談があれば、こちらのサービスからご連絡いただければ幸いです^^
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す