コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

【2022/09/01検証】Power AppsのOffice365Users.SearchUserV2アクションのパラメータが変更されている


スポンサードリンク

はじめに

Power AppsのOffice 365 UsersコネクタのSearchUserV2アクションのパラメータが変更されていました。

docs.microsoft.com

これによりこれまでと同じ式を設定しても動作が異なる。などの事象が発生することを確認しましたので検証結果を記載します。

記載内容に誤りがある場合は、コメントなどご指摘いただけますと幸いです。

また、この変更により既存アプリに直ちに影響があるわけでは(多分)ないと思います。
ただ念のため動作確認を行うことをおすすめします。

この記事はこの変更とこの変更による問題点を多くの方に共有するために纏めました。
Ideasに修正要望を上げる予定ですので、記載したらリンクをまたこちらに記載します。

Ideasに投稿しました。
よろしければVoteをお願いします。
Voteの多いものほど対応してもらえます。

powerusers.microsoft.com

SearchUserV2の変更内容

SearchUserV2ですが、公式のリファレンスをみてみるとパラメータに新規でisSearchTermRequiredが追加され、skipTokenが削除されています。

実際にPower Apps上の画面でみてみると、isSearchTermRequiredが確かに追加されています。
ただ、skipTokenはこれを見る限りでは設定できそうに見えますね。

isSearchTermRequiredパラメータ

isSearchTermRequiredパラメータは、リファレンスの説明にもある通り検索語句が空の場合に結果を返すかどうかを指定するパラメータです。

リファレンスには「Yes」か「No」を設定するように書いていますが、正しくは「true」か「false」ですね。

Office365ユーザー.SearchUserV2({isSearchTermRequired: true}).value

に設定するとsearchTermが設定されていないのでなにも返されません。

Office365ユーザー.SearchUserV2({searchTerm: "",isSearchTermRequired: true}).value

これも上の式と同様searchTermが空なのでなにもなにも返ってこないですね。

これらを例えばコンボボックスのItemsなどに設定すると、この式はなにも返さないのでユーザの検索ができなくなってしまいます。
注意しましょう。

Office365ユーザー.SearchUserV2({isSearchTermRequired: false}).value

この場合は、フィルタリングがされないのでsearchTermが空でも検索結果が返ってきます。

これがこれまでの

// これまでの設定
Office365ユーザー.SearchUserV2().value

この式と同じ結果が得られますね。

さてこのisSearchTermRequiredはどうやらデフォルトtrueなようです。

これがどういうことかというと、これまでの書き方と同様に

Office365ユーザー.SearchUserV2().value

Office365ユーザー.SearchUserV2({searchTerm: TextInput1.Text}).value

みたいにかいてしまうと、これまでの動作と新規でアプリを作成したときの動作で差異が発生するという事象が起きてしまいます。

うーんこれはよくないですね。。。

skipTokenパラメータ

skipTokenパラメータはドキュメントから(なぜか)削除されちゃっていますが、こちら現在でも設定でき、また動作します。

ちなみにskipTokenの設定方法について纏めているサイトが少ないので、記載しておくと

Set(
    varSkipToken,
    With(
        {odataNextLink: Office365ユーザー.SearchUserV2({isSearchTermRequired: false}).'@odata.nextLink'},
        Mid(odataNextLink, Find("skipToken=", odataNextLink) + Len("skipToken="))
    )
)

みたいな式で取得したvarSkipTokenを設定すればよいです。

既存アプリへの影響

この変更がいつなされたのか正直わからないですが、8/29頃に作成したアプリの中でSearchUserV2アクションを実行しているアプリがあったので、動作確認をしてみました。

結果として、このアプリはisSearchTermRequiredパラメータが存在せず、また設定していなくともユーザの検索結果を取得することができました。

ただし、アプリのデータからOffice365Usersコネクタを削除し、再度Office365Uersコネクタを追加する。ということを行い、コネクタのバージョンを上げるような操作を行うと、SearchUserV2アクションにisSearchTermRequiredパラメータが設定できるようになっており、またisSearchTermRequiredパラメータを設定していないと、ユーザの検索結果が取得できませんでした。

なので、既存のアプリには今すぐは(多分)影響はないですが、何かの拍子でアプリ内で利用しているコネクタのバージョンが更新されると、これまでとは異なる動作をする恐れがある。

ということになるかと思います。

ちなみにこのコネクタのバージョンってどこで定義されているんですかね?
コード化して探してみたんですけど、わからなかったです。。。(見落としている可能性大)

おわりに

今回のこの変更はなぜこのようにしたのか?設計の意図が全然わかんないな。と個人的に思っています。
パラメータの内容を変えるのであれば、SearchUserV3などのようにバージョン上げるべきでは??と思いますし、最低限既存の式と最新の式とで同じ式であれば同じ動作とするべきだと思っています。

これのせいで不要な混乱が発生する恐れを危惧しています。

最初にも記載しましたが、この件をIdeasに投稿しました。
よろしければVoteをお願いします。
Voteの多いものほど対応してもらえます。

powerusers.microsoft.com


スポンサードリンク