Power Appsの使い方

Power AppsとPower Automateの使い方やできることがわかるブログを目指しています。

教育関係者向け Power Platform カンファレンスが開催されます!

8/9 13:00より、Microsoft認定教育イノベーターによるPower Platformカンファレンスイベントが行われます。

 

教育機関向けのイベントではありますが、実際のアプリの導入事例なども多く紹介されるみたいですので、Power Platform に興味のある方は是非ご参加ください。

 

詳細は下記からどうぞ。

 

Power Platform で変わる学校の一日

教育関係者向け Power Platform カンファレンス

https://sway.office.com/hjm8RBheEH8HKjUU?ref=Link&loc=play

 

実は、ここ数ヶ月このMIEE Microsoft認定教育イノベーター向けのPower Apps 作成支援を行っておりました。普段なかなかできない先生方への支援ということで、楽しく支援させていただきました。今回のカンファレンスでもいくつか直接支援したものがあるみたいで、個人的にも非常に楽しみにしています。

 

個人的にですが、僕は Power Apps Power Platform を日本に真に広めていくのは学生にアプローチしていくのが最適だと考えていまして、今回その支援をできたことをとても嬉しく思っています。みなさんもカンファレンスにご参加いただき、現在の教育機関への Power Platform 展開、導入状況について確認してみてはいかがでしょうか!

 

ひょっとしたら、数年後入社してくる新卒さんは Power Apps がめちゃくちゃできる人材かもしれませんよ!(そうなったらいいなー。)

Power Apps オンライン勉強会+座談会 に参加してきました!

2020/8/5 に行われたイベント [ Power Apps オンライン勉強会+座談会 ]に参加してきました!今日はその感想を書いていきます。

 

Power Apps オンライン勉強会+座談会

https://powerapps.connpass.com/event/183425/

 

近頃のイベントは例のウィルスの影響でオンライのものが増えています。

今回のものもリモート開催になっていて、Microsoft Teams を利用して開催されました。

 

LT登壇 + 座談会の形式で、Teams 会議機能を使って行われました。

 

以下LTの感想です。(順不同)

 

Power PlatformをHoloLens 2でいろいろしてみた

登壇者:中村 薫@ホロラボさん

 

HoloLens 2 x Power Platform の実用性についてお話しいただきました!HoloLens 2 のデモを見るのはあまりないので単純に面白かったのと、サーバ連携部の切り取りに有効とは、なかなかおもしろい内容でした。かゆいときにすぐかける。かゆいところに手がすぐ届くのがPower Apps のいいところですね!この登壇でHoloLens 2購入を決めた人もいるとか、いないとか・・・!

 

趣味活動記録アプリ作成のススメ

登壇者:まえの さん

 

趣味のためのアプリ作成から、改善サイクルと業務への活用についてお話しいただきました。

アプローチとして僕は趣味やゲームアプリの作成でPower Apps の学習を進めて、業務に役立てられます!っていうのはずっと思ってて、言っていたりしたんですけどこの登壇では非常にわかりやすく、開発者でない方でもどういったアプローチで改良していけるか、業務に役に立つのかをステップバイステップで説明されていました。アプリをとりあえず作る→使う→改良する→使う→改良するといったサイクルがピンとこないかたには、非常にありがたい内容だったと思います。素晴らしいお話をありがとうございました。

 

PowerPlatformを使った業務改善活動

登壇者:mihosaku (さくらいみほ) さん

 

年単位での活動の経緯と、社内での啓蒙活動についてお話しいただきました。

これは本当に、すばらしい内容だったと思います。僕が普段考えているようなモデルケースのような啓蒙活動の成果で、更にJPAUGの活動も直接お役に立てていたようで、運営のメンバーとして大変嬉しく思います。

こういったお話をすごく聞きたくて、でもなかなか聞けないんだろうな、と正直半ば諦めていたところでした。ですが、こうして成功事例として登壇いただけたことを大変嬉しく思っています。実際に日本の事例として、ちゃんとこういった形のアプローチで成功するんだということが聞けただけでも、個人的にうれしいです。貴重なお話をありがとうございました。

 

昭和な会社員が Power Platformをやる!と決意したワケ

登壇者:あーちゃん@昭和企業 さん

 

ガッツリ昭和な社内でPower Platform を始められた経緯についてお話しいただきました。

初めはRPAに取り組まれていて、例のウィルスの影響などもあり二転三転、羽陽曲折あり Power Automate にたどり着いたそうです。お話の中でいいなと思ったところは、組織的になかなかRPA導入がうまく行かないときでも、仲間の温かい声でなんとか踏ん張れたり、社外に出てみる、技術コミュニティに参加してみる。そうしたことでまた見えてくるものがあったみたいです。Power Platformの導入には、同僚、上司、組織の理解が重要になってくると思います。社内に広めるのに苦労している方は、まずは仲間を増やしてみるのがいいかもしれません。素晴らしいお話をありがとうございました。

 

Power Appsを勉強して気づいたこと

登壇者:榎 洋一さん

 

挫折。からの再トライで1日でアプリを作成し、全社展開されたというとんでもないお話でした。

例のごとくウィルスの影響で、上から「社員の体温を把握できるようにシステム作ってくれ。明日までによろしく!」みたいな感じで依頼があったらしく、それをすんなり達成してしまったスーパーマンの話でした。利用したのはPower Apps x SharePoint で、ちょっとだけ画面を見せてもらえたんですが1日仕事とは思えないような完成度でした。ただ、そこにも秘訣があって事前にPower Apps にトライしたことがあったそうです。ただそのときはうまく活用できず断念したようでしたが、存在は知っていてある程度の基礎知識もあって、そこから半日足らずでアプリ構築と展開をすることができたそうです。Power Apps のアプリ作成、展開の早さにも目を瞠るものがありますが、それを達成できたそもそものポテンシャルもやばいですね。やばすぎる。こちらも1日で必要なアプリを即時展開できる実例として、ほんとに実在するんだ!と衝撃だったのとちょっとうれしさを感じました。改めてPower Apps すごいなと。この方も本当にすごい。面白いお話をありがとうございました。

 

 

新コミュニティ立ち上げの告知

同時に、新コミュニティ立ち上げの告知を行いました。

只今コミュニティ名の募集も行っておりますので、#王者の新コミュニティ でご応募お待ちしております!

 

 

8月中に立ち上げる予定なので、今しばらくお待ち下さい。

新コミュニティについて詳細な記事を別で上げる予定なので、よければそちらも御覧ください!

 

総括

と、こんな感じのイベントでした!今回は初心者LTを多く設けて、初心者の方に入りやすいようにということでやってみたイベントでしたが、登壇希望者も予想より多くて事情に嬉しい限りです。ただ、今回どなたもめちゃくちゃいい内容だったので逆にハードル上がってないか杞憂してます。大丈夫かな・・・。次回もやると思いますので、続報はお待ち下さい!(僕は主催じゃないので直接問い合わせはしないでくださいね。)

Power Apps キャンバスアプリのグループに対する共有について

Power Apps キャンバスアプリはユーザーまたはグループに対して共有することができますが、そのあたり一回整理してみようと思います。

※モデル駆動形アプリはまた違った共有方法なのでご注意ください。

 

Power Apps でキャンバスアプリを共有できるグループ

Power Apps はセキュリティグループまたは、セキュリティ設定がONになっているOffice 365 グループに対して共有することができます。

 

セキュリティグループの方は作り方によらず問題なく共有できますが、Office 365 グループは作り方によっては設定変更が必要になってきます。

 

グループの作り方

グループを作る方法として、いくつかあります。

Azure AD からは、セキュリティグループやOffice 365 グループを作成できます。

Admin Center からもAzure AD 同じようなことができます。

Teamsチーム や SharePointサイト などを作成した場合でも、Office 365 グループが作成されます。

 

Azure AD から作成した場合

Azure AD からOffice 365 グループを作成した場合は、セキュリティ設定がONで作成されます。

問題なく共有することができます。

 

Admin Center から作成した場合

Admin Center からOffice 365 グループを作成した場合は、セキュリティ設定がOFFで作成されます。

共有するには追加で設定変更が必要になります。

 

Teams SharePoint等からOffice 365 グループが作成された場合

SharePoint や Teams などからグループを作成した場合、セキュリティの設定がOFFで作成されます。

Teams 上などから作成したグループに対して共有したい場合は、追加で設定変更が必要になります。

 

セキュリティ設定の変更方法

PowerShell を使用してセキュリティ設定を変更できます。

 

詳細な手順は下記から確認できます。

https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/share-app#share-an-app-with-office-365-groups

 

(管理者くらいしか使わないからか、あまり親切な設定方法じゃないですね。)

 

共有可能なチームを新たに作成する方法

既存のTeamsチームに対してグループ共有するには上記のような操作が必要ですが、これから新たに作成する場合では、例えば下記のようにするとPowerShellを使用することなく共有可能にできます。

 

Azure AD でOffice 365 グループを作成する。

Teams で[ 既存のOffice 365 グループ ]からチームを作成し、上記のグループを指定する。

 

このようにすると、セキュリティ設定がONのチームを作成することができます。

Power Apps Formの参照データソースを動的に切り替える

Formなどで参照するデータソースを動的に切り替えたい場合、以下の2つの方法が考えられます。需要としては開発、テスト用データソースに切り替えたいとかですかね。

 

どちらも一長一短、一癖ある感じです。

 

変数方式

変数にデータソースの参照を代入して置き、Form.DataSourceでは変数を参照する方法です。

Screen.OnVisibleButton.OnSelectで別のデータソースを代入することでデータソースを切り替えることができます。

 

UpdateContext({FormDataSource:データソース1});

 

メリット

日本語でフィールドの指定ができるので、デフォルトの指定方法と変わらないのが楽。

 

デメリット

SharePointリストの添付ファイルに対応できない。

 

If() Switch() 分岐方式

Form.DataSource プロパティにIf()分岐などを設置して、条件によりデータソースを切り替える方法です。

 

If(true,データソース1,データソース2)

 

メリット

SharePointリストの添付ファイルに対応できる。

 

デメリット

日本語のフィールドがシステム生成の読めないフィールド名になってしまう。

 

対応表

 

直指定方式

変数方式

If() 分岐方式

フィールドを日本語で指定

 

フィールドを英語(システム生成)で指定

添付ファイル対応

 

※検証中いじってたら変数方式で日本語指定ができなくなったりしたので、アプリ手順によってはできないことがあるかも。ブラウザリロードしたら直りました。

 

まとめ

最初If()で分岐できないのかと思ったりしたので、ちょっと罠ですね。

場合によりどちらも取りうる選択肢になると思います。アプリ要件を満たすものでお好きな方法で分岐させてみてください。

フィールド名は基本英語で作っておくのが吉ですね。

Power Apps 押さえておきたいデータ操作系関数まとめ

Power Apps でデータソースに対してレコードの登録や更新、削除、フィルタリングなどを行うときに使用する関数について、改めてまとめてみようと思います。

 

この記事では、以下の関数について書いていきます。

Patch()

Remove()

Filter()

LookUp()

 

これ以外にもデータ操作を行える関数はありますが、すべてをまとめると混乱の元になりそうなので、今回は個人的に押さえておいたほうがいいだろうと思うもののみにしています。

 

最後にうまくいかない場合のQAがありますので、できないときはそちらも参考にしてみてください。

 

Patch()・・・レコードの登録や更新をするときに!

Patch()関数を使用するとレコードの登録や更新を行うことができます。

基本的に Power Apps でのレコード操作はフォームコントロールを使用して行いますが、Patch()関数を使用するとより柔軟なアプローチでアプリを構成することができます。

 

少しとっつきにくいですが、慣れれば問題なく扱えるようになると思います。そういう意味ではガチ初心者向けの関数ではない気もしています。まずはフォームコントロールを使用したアプリから始めて、データに慣れてきたら以下を参考に柔軟なデータ操作を行うアプリを作ってみましょう。

 

レコードを新規登録する方法

Patch(

    [データソース], // 第一引数。ExcelSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。

    Defaults([データソース]), // 第二引数。Defaults()の引数の中には第一引数と同じデータソースを指定します。

    {

        ID:"1"// 複数フィールドを含める場合は , で区切ります。

        Name:"Makoto Maeda",

        Number:1

    } // 第三引数。フィールド名: }の形式でレコードの値を入れていきます。すべてのフィールドを含める必要はありませんが、必須フィールドは忘れずに含めましょう。

)

 

レコードを更新する方法

Patch(

    [データソース], // 第一引数。ExcelSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。

    Gallery1.Selected// 第二引数。更新したいレコードを指定します。指定には主に Gallery.Selected  ThisItem LookUp() などを使用します。

    {

        ID:"1"// 複数フィールドを含める場合は , で区切ります。

        Name:"Makoto Maeda",

        Number:1

    } // 第三引数。フィールド名: }の形式でレコードの値を入れていきます。更新するフィールドのみ含めればOKです。

)

 

Patch()関数を応用するとどういったことができるか?

フォームコントロールでは実現出来ないような事、例えば以下のようなことができます。

Galleryのリスト上から直接1クリックでレコードを更新する(たとえばBOOL値のトグルなど)

・複数のレコードをまとめて登録、更新する(これにはForAll()を併用します。)

・フォームコントロールに縛られない自由なUIで入力フォームを構築する

・ユーザーに意識させずにバックグラウンドでレコードを登録する

 

Remove()・・・レコードを削除するときに!

Remove()関数を使用するとレコードを削除することができます。

レコードまたはコレクションを指定して、レコード1件または全件を削除対象とすることができます。

 

1件のレコードを削除する方法

Remove(

    [データソース], // 第一引数。ExcelSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。

    Gallery1.Selected // 第二引数。削除したいレコードを指定します。指定には主に Gallery.Selected  ThisItem LookUp() などを使用します。

)

 

複数のレコードを削除する方法

Remove(

    [データソース], // 第一引数。ExcelSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。

    colItems// 第二引数。削除したいコレクションを指定します。指定には主に Filter()  Collection変数 などを使用します。

    All // 第三引数。All と指定するとコレクション内のレコードを全件削除することができます。

)

 

Filter()・・・レコードを複数件取得したいときに!

Filter()関数を使用するとレコードを複数件取得することができます。

Gallery.Itemsに指定したり、Collectionに入れたりして使うことができます。

 

レコードを複数件取得する方法(データソースの一部のレコードをフィルタリングして取得する)

Filter(

    [データソース], // 第一引数。ExcelSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。

    Name = "Makoto Maeda" // 第二引数。取得対象レコードの検索条件を指定します。条件に一致するレコードが取得できます。

)

 

LookUp()・・・レコードを1件取得したいときに!

LookUp()関数を使用するとレコードを1件取得することができます。

複数のレコードが条件に一致する場合には、最初の1件が取得されます。

 

レコードを1件取得する方法

LookUp(

    [データソース], // 第一引数。ExcelSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。

    ID = "1" // 第二引数。取得対象レコードの検索条件を指定します。条件に一致するレコードが取得できます。

)

 

レコードを1件取得して、特定のフィールドを取得する方法

LookUp(

    [データソース], // 第一引数。ExcelSharePointListなどのデータソースを指定します。参照設定できていれば選択肢が出てくるはずです。

    ID = "1"// 第二引数。取得対象レコードの検索条件を指定します。条件に一致するレコードが取得できます。

    Name // 第三引数。省略可能。取得したいフィールドが1つだけの場合は、フィールドを指定することで帯域やメモリの節約、パフォーマンス向上につながります。

)

 

なんかうまくいかないんだけど!?

データソースが選択肢に出てこないときは・・・

データソースが選択肢に出てこないときは、Power Apps にデータソースへの参照設定ができていないかもしれません。

まだ設定していない場合は

[ビュー] > [データソース] > [コネクタ] > [OneDrive for Business]

[ビュー] > [データソース] > [コネクタ] > [SharePoint]

などからデータソースを選んで参照設定しておきましょう。

 

Excelをデータソースにしていて、レコードの登録、更新がうまくいかないときは・・・

データソースにしているExcelをブラウザ等で開いていませんか?

ファイルが開いているとPower Apps からアクセスすることができません。開いているファイルを閉じてもう一度試してみてください。

 

赤いエラーが出てうまくいかないときは・・・

Power Apps は優しいので、エラー解消のヒントを教えてくれています。エラー箇所にカーソルをもっていってエラーメッセージを読んでみましょう。エラー解消の一番の助けになるはずです。

 

まとめ

以上がまず押さえておきたいデータ操作に使う関数です。実は他にもデータ操作に使える関数がありますが、多くのケースでは先に挙げた関数でカバーできると思います。まずはこの関数を扱えるようになりましょう。

 

PR

Power Apps  Power Automate のアプリ作成支援や導入支援サービスを提供しています。

Power Apps / Power Automate 技術支援サービス | ZEE CitizenDevSupport

https://powerapps.zee-citizendevsupport.com/

Power Apps や Power Automate に関する仕事のご依頼は下記ページからお問い合わせください。
ZEE CitizenDevSupport