PowerApps ポータル作ってみて

#はじめに
今年の５月にはじめて、PowerAppsポータルの存在を知り作成したポータルサイトは、まだ２つですが、作成での気づき等をまとめておきます。

#作ってみての感想
+ 意外とポータルの機能だけ(ローコードだけ)でも作れるが、「やっぱり痒い所に手が届かない」
+ 細かい要望をされると、JqueryとかLiquidとかで、細工していかないと実装できない。
+ テーブル（エンティティ）のフォームとクイックビューがもう少しうまく使えると、ローコードでできる範囲が増える。
+ まだ知らない機能が沢山あると思うので、もっとDocsやMSLearnのポータルコンテンツを充実させてほしい。

##１つ目のサイト
###概要
+ 契約情報等を顧客にPDFで送っていたものを、WEBにて参照・承認することで、仕組みを電子化するための仕組みの中の１つとしてポータルを作成。
+ 2020年5月にはじめて、PowerAppsポータルの存在をしり、手探りで作成。
+ PowerAppsに取り組んでみるお試しとして作成。
+ 作成時の要求事項は、PowerAppsの可能性を知りたいので、できるだけPowerAppsの標準機能のみで作成してほしい。
+ 仕様確定者も初めての取込みなのでポータルでできそうなこと、出来なそうなことを選定し要求してくれた。

### 要求事項と対応

1. ポータルの表示を普通のテーブルようにしたい
1. 画面上部のヘッダにあるホームなどのリンクを消してほしい
1. 送信するボタンの名称を変更したい
1. 送信するボタンの表示をカスタムしたい
1. ラジオボタンの選択肢の表示を大きくしたい
1. 背景色を変更したい
1. データのステータスにより、画面に注意メッセージを表示したい
1. データのステータスにより、送信ボタンの表示非表示を制御したい
1. ポータルでの更新だけを検知して、メールを送信したい
1. ページを直接参照できるリンクをメールで送りたい

ポータル管理での設定およびCSSで概ね対応可能でした。後は、簡単なJqueryと、PowerAutomateを利用して実装。


##２つ目のサイト
###概要
+ 特定顧客への消耗品の注文WEBサイト
+ ポータルで作成ということを意識せず、普通のWEBサイトのようにやれることをそのまま要求された。

### 要求事項と対応
1. ユーザ毎に権限を与えて表示するデータを切り替えたい
1. リスト表示の項目名を変更したい
1. 自ページの場所を示すリンクを表示したい
1. 送信完了時のメッセージを変更したい
1. 管理者のみが表示できるポータル画面を作成してほしい
1. ログインをID/パスワードのみにして、外部ログインとかの表示を消してほしい
1. ログインしていない場合に、ログインページに飛ぶボタンを用意したい
1. 別のページに飛ぶボタンを用意したい
1. リンク先のデータが登録されているときにだけ、送信ボタンを表示したい。それ以外はアラートメッセージを表示したい
1. 一定の条件の時に、リンクボタンを表示したい
1. ＥＸＣＥＬのように、単票が連なった表を表現したい
1. 条件により、テーブルの行を表示しない
1. 短行テキスト項目を、折り返し表示としたい
1. 必須とラベル箇所に赤字で表示したい
1. 同一商品で価格が違うページを作したい
1. PowerAutomateにて非同期に更新されるデータの最新を参照したい

ポータル管理での設定、CSS、Jquery、PowerAutomateを利用して実装。
また、データによって動作を変えるものは、Liquidを利用しての実装。
一番下の「PowerAutomateにて非同期に更新されるデータの最新を参照したい」は、Microsoftのサポートに問い合わせましたが、PowerAppsの仕様上「最大15分間はかかる、同期は保証できない」とのことで、実装できませんでした。

#参考にさせていただいたリンク

####アクセス関連
+ PowerApps Portals で問い合わせページを作る ③ エンティティ・ページアクセス許可の設定<br>→　こちらのサイトアクセス権について、非常にわかりやすく大変参考になりました。<br>https://kageura.hatenadiary.jp/entry/powerappsportals04
+ Power Apps ポータルでのユーザー登録
<br>https://docs.microsoft.com/ja-jp/learn/modules/authentication-user-management/3-user-registration
+ Power Apps Portals Entity Lists and Record Level Permissions
<br>→この方のYoutubeシリーズも勉強になり色々と参照させていただきました。<br>https://www.youtube.com/watch?v=lOPKwAWhwTU

####liquid/FetchXML
+ 高度なポータルのカスタマイズ<br>https://docs.microsoft.com/ja-jp/powerapps/maker/portals/liquid/liquid-overview
+ FetchXML の使用によるクエリの作成 <br>https://docs.microsoft.com/ja-jp/powerapps/developer/common-data-service/use-fetchxml-construct-query
+ Power Apps Portals: fetchxml Liquid Tag and Entity Permissions<br>http://www.ariclevin.com/Blog/Post/fetchxml-portal-entity-permissions
+ Fetch Xml Portal page with Entity Permissions <br>http://www.ariclevin.com/Blog/Post/fetchxml-portal-entity-permissions
+ Liquid Code Tips(Code-snippets) for Dynamics Portal<br>https://sank8sinha.wordpress.com/2020/07/27/liquid-code-tipscode-snippets-for-dynamics-portal/

####その他
要望があったけど実装しなかったポータル上でのファイル管理
+ SharePoint ドキュメントの管理<br>https://docs.microsoft.com/ja-jp/powerapps/maker/portals/manage-sharepoint-documents?#step-1-enable-document-management-functionality-in-model-driven-apps-in-dynamics-365
+ Power Apps Portals Tips<br>→　ポータルの勉強になりました<br>https://www.youtube.com/playlist?list=PL5dtzuEgjWgm0Xlk5IfDr4D3-4D9KWYc1


上記要望への対応詳細については、別途記述して投稿予定です。