2022/10/18(火)~10/20(木)の3日間に渡って「Japan Power Platform Conference 2022」が開催されました。
どのようなイベントかについては、上記イベントページや、やまさん の記事「Japan Power Platform Conference 2022 登壇・運営後記」をご覧ください。
Twitterでハッシュタグ「#JPPC2022」でも当時の様子を確認できると思います。
さて、本題です。
JPPC2022 で、愛さんが「SharePoint リストのための簡易的な管理ツールを作ってみよう!」という内容でツールを作成するデモを見せてくださいました。とにかくこのツールスゴイんです!(語彙力)
列の内部名を表示できたり、リストを非表示にする(隠しリスト)にすることもできちゃうんです。
SharePointサイトの管理者の方は、作ってみて欲しいし、活用して欲しいと思いました。
どのようなツールかは、私が解説するよりも、愛さんが資料を公開してくださっているので、そちらをご覧になってください。
資料:SharePoint リストのための簡易的な管理ツールを作ってみよう!
公開していただいた資料内に作成方法の記載があったので、私も作ってみました。
資料に記載がされていない部分で注意したほうがいいなと思ったことや、ハマったこととその解消方法についてメモしておきたいと思います。
※ 後日、動画が公開されるとのことですので、実際に愛さんがアプリを作成していく様子を見ながら一緒に作成するとより理解が深まると思います。
フローの作成は1アクションごとに実行して結果を確認する
フローの中で「JSONの解析」「応答」アクションを利用しています。これらのアクションは、スキーマを設定します。
資料中にも記載がありますが、スキーマは、直前のアクションの実行履歴の出力結果をコピーして、[サンプルから作成]-[サンプル JSON ペイロードの挿入]で設定します。
そのため、「JSONの解析」アクションを追加する前でフローを保存し、フローを実行する必要があります。
「JSONの解析」アクションのスキーマ設定のためだけでなく、ひとつアクションを追加したら、フローを実行する。実行結果が問題なければ、次のアクションを追加するという小さく作っていく方法をとるのが、完成までの近道です。
Power Apps側でフローを更新する
このアプリは、Power Appsでアプリを作成し、Power Automateで連携するフローを作成する。フローを作成したら、Power Appsのアプリ側のプロパティを設定するという流れを何度も繰り返します。
フローから渡された値をアプリ側で「ギャラリー」や「データテーブル」に反映するように設定しますが、フローの実行履歴上は問題ないが、アプリ側に反映されないといったことがありました。
フローとアプリとうまく連携が取れないことがあるようです。
このような事象(Power AutomateからPower Appsへデータがうまく渡らない)が発生したときは、以下の手順でPower Apps側で連携しているフローを手動で更新すると解消されます。
[Power Automate] – [<更新したいフロー>] – […] – [最新の情報に更新]をクリック
更新中は以下のように「読み込み中」と表示されます。
更新中、アプリ側で「×」が表示されますが、更新が完了すれば、「×」は解消されます。
ステップ2 「リストを更新する」(P18~P22)
P19 で「Power Apps (V2)」トリガーに「SiteUrl」や「ListHidden」といった入力を追加します。
P20では、トリガーに指定した入力値を次のアクション「SharePoint に HTTP 要求を送信します」(※1)アクションに設定していきます。
[サイトのアドレス]に「URL」、「URI」には「Id」と、動的なコンテンツで設定している画面となっています。ここでは、P19 で「Power Apps (V2)」トリガーで設定されている「SiteUrl」や「ListHidden」を設定しましょう。
この辺りは前後の関係を確認し、読み替えられるようなるとよいと思います。
(私も一瞬、混乱しました💦)
※1:資料上は「SharePoint リスト情報を更新する」という名前に変更されています。
ステップ3 「リストの列一覧を取得する」(P23~P28)
P27で「列の一覧を表示する」アイコンから呼び出したフローから渡される値を、「SPFields」というコレクションに格納しています。
格納されたコレクションは、P29 で「データテーブル」の「Items」プロパティに設定することで、リストの列情報がテーブル形式で表示されるという仕組みです。
P28まで設定しただけでは、以下のようにデータが表示されませんので、24~P26で作成した「リストの列のプロパティを取得するフロー」をフローを実行してみます。
アプリを実行して「列の一覧を表示する」アイコンをクリックします。
データテーブルにフィールドが設定されていないため、データが表示されません。
データテーブルに[フィールドの編集]-[+フィールドの追加]でフィールドを追加しようとすると、「Value」しか表示されません。
「SPField」コレクションにも「Value」しか格納されていないことが分かります。
フローからデータが受け取れていないのか確認しても、フロー側は成功しており、欲しい情報が返ってきていることが分かります。
困ったときの「Power Apps側でフローを更新する」を実施してみます。
[Power Automate] – [<リストの列のプロパティを取得するフロー>] – […] – [最新の情報に更新]をクリックします。
しかし、[+フィールドの追加]でフィールドを追加しようとすると、「Value」しか表示されません。
困りました。
ちょうど「おうじゃとわいわいもくもくしたりする日 #72」でもくもくしているときだったため、参加者のみなさんに教えていただきました。
データテーブルの「データソース」から、「SPFields」を選択し直します。
この選択し直すという操作が必要でした。
(教えてくれた「おうじゃさんといっしょ」参加者の方々ありがとうございました!)
[データ テーブルの列を置換しますか?]というメッセージが表示されるので、[列の置換]をクリックします。
[フィールドの編集]-[+フィールドの追加]をクリックします。
フローから[応答]アクションで返ってきたフィールドを選択することが可能になりました。
各フィールドにチェックを入れて、[追加]をクリックします。
データテーブルにフィールドが追加されました。
これでうまくいくはずです。
アプリを実行して「列の一覧を表示する」アイコンをクリックします。
列の情報が取得でき、アプリのデータテーブルに反映されました。
アプリ側を確認すると、アプリ側にフローから返ってきた値を受け取っていることも分かります。
さいごに
Power Automateのクラウドフローと連携してPower Appsでアプリを作成する際に、フローとアプリの修正を行ったり来たりしながら作成することがあると思います。
そのときにうまく値が反映されないといったことがあったら、情報を更新する、プロパティを設定し直すといったことを行う必要があるので、ハマったときはぜひ思い出してみてください。
コメント