23
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Power Platform で市民開発する際に、SharePoint リストのユーザーまたはグループ列を使う際にはまること

Last updated at Posted at 2024-06-17

はじめに

Power Platform で市民開発する際に、SharePoint リストをデータソースとして利用する方も多いと思います。

この際、以下のように、ユーザーまたはグループという種類の列を使うことがあると思います。

image.png

image.png

こちらを利用すると、SharePoint リストでアイテムを登録するときはもちろん、例えば、Power Apps でフォームコントロールを利用すると、簡単に組織内のユーザーを検索することができ、非常に便利です。

image.png

image.png

そのため、利用する方も多いと思うのですが、Power Apps や Power Automate でこの列を操作する際、少し癖があり、はまってしまうこともあるので、その観点で情報を整理したいと思います。

複数選択を許可している際にメール通知する

複数選択を許可している際、上記画像の例だと、例えば、担当者が複数いる場合にリマインドメールを出したい際、以下のように For each となってしまうため、担当ごとに別のメールを出すことになってしまいます。

image.png

image.png

普通は、複数の担当者がいる場合、一つのメールで、宛先に複数の担当者を入れてメールをしたいと思います。

こちらについては、以下の記事で対処策を書いていますので参考にしていただければと思います。

項目の更新をする際に失敗する

例えば、SharePoint リストにて、以下のように、ユーザーまたはグループ列が入力必須となっていた場合、項目を更新する際、入力必須列について、変更が不要な場合においても値を入れる必要があります。

image.png

image.png

通常、このような場合、以下のように、変更が不要な列は、トリガーの動的な値を再利用して代入するだけで済むのですが、今回でいう「問い合わせ者」の列について、どのように値を入れればいいか分かりにくいです。

image.png

試しに、こんな感じでトリガーの「問い合わせ者:の情報をそのまま渡してみます。

image.png

image.png

実行してみましたが、残念ながら、エラーになりました。。

image.png

対策は以下のような感じになります。ちょっと面倒ですが、以下のような配列変数を用意して、以下のような形式で、トリガーの問い合わせ者の Email を代入していきます。

image.png

image.png

image.png

image.png

image.png

実行してみます。無事に項目の更新に成功しました。正直、こちらはクセがありすぎだと思います。。

image.png

Power Apps で既定値を設定する

ユーザーまたはグループ列を使う際、Power Apps で既定値を設定したい場合があると思います。
例えば、以下のように、Power Apps のアプリを通じて問い合わせをする際、問い合わせ者の欄を既定で自分にしたいという感じです。

image.png

こちらのような既定値の設定についても、ユーザーまたはグループ列を使う際、癖があります。

[DefaultSelectedItems]プロパティに対して、以下のような数式を代入します。これは暗記出来るものではなく、基本どこかに控えておいて貼り付けるのがいいと思います。個人的にも今まで何度も案内してきました。

image.png

{
    Claims: "i:0#.f|membership|" & Lower(User().Email),
    Department: "",
    Email: User().Email,
    DisplayName: With(
        {
            fullName: Split(
                User().FullName,
                " "
            )
        },
        Last(fullName).Value & " " & First(fullName).Value
    ),
    JobTitle: "",
    Picture: ""
}

※変数を使ったり、Office 365 ユーザーコネクタを使う方法もありますが、初学者の方が初めて作成するアプリや簡易的なアプリの場合、このような数式でも良いかなと思っています。

テストしてみます。無事に問い合わせ者が入りました。

image.png

複数の担当者がいる場合に Power Apps で表示をさせる

複数選択を許可している場合、以下の例だと、複数の問い合わせ者がいる場合に、Power Apps のアプリのギャラリーで表示をさせたいケースあると思います。しかし、以下のように、エラーになってしまいます。

image.png

なお、複数選択を許可していない場合は、以下のような感じで表示が可能です。

image.png

こちらの解決策について、以下のような式にすることで、複数の問い合わせ者を表示することができます。

image.png

Concat(ThisItem.問い合わせ者,DisplayName,",")

なぜこれで表示することができるのか、以下、イメージです。

image.png

Power Apps で担当者で検索をしたい

例えば、Power Apps 上で、以下の担当者列でテーブルをフィルターしたいといった要件があるとします。

image.png

基本的には、以下の記事で記載したような、フィルターをするのが良いと思いますが、どうしても検索をしたい場合のアプローチについて説明します。

まず、以下のように、Search 関数を使う方法がありますが、式がエラーとなってしまいます。
担当者列は、テキスト型ではないためです。

image.png

では、こういった感じで書こうとしてもエラーになります。残念ながら、担当者.DisplayName という表記が上手く識別できないようです。

image.png

対処策として、担当者列の DisplayName の情報だけを、以下のようにして別の列として保持するコレクションを作成し、そちらの列の情報を基に Search 関数を利用する方法があります。

AddColumns 関数の第二引数である追加する列の名前 (担当者名) について、ダブルクォーテーションで囲む必要がなくなっていました。

image.png

image.png

image.png

まとめ

今回は、Power Platform で市民開発する際に、SharePoint リストのユーザーまたはグループ列を使う際にはまることについて整理してみました。

便利な反面、ちょっとはまってしまうことがあるため、参考になれば幸いです。

それ以外にも気づいたり相談されたりしたら追記していきます。

23
25
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?