Power Appsの使い方

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

Power Apps ギャラリーコントロール上の変更を都度Collectionへ反映させる

Collectionをデータソースとしているギャラリーにテキストコントロールなどを設置して、直接値を書き換える方法について。

 

やり方

ギャラリーでリスト上に表示したCollectionに対して都度更新したい場合、以下のようにコントロールOnChangeなどでPatch()処理を行います。

 

TextInput1.OnChange:

Patch(colItems,ThisItem,{Value1:Value(TextInput1.Text)})

 

OnChangeなどに仕込むことで、変更を半リアルタイムで反映させることができます。

動的に表示したい数値などがある場合に有効です。合計値とか。

 

 

必要がないのであればリアルタイムでの反映は処理速度に影響がでそうなので適切なタイミングで変更を反映するようにしてください。

 

サンプルで使用したCollection

ClearCollect(colItems,{Value1:0,Value2:0},{Value1:0,Value2:0},{Value1:0,Value2:0})

 

Power Apps セッションがタイムアウトしてしまう場合の対処法

Power Appsでサイネージを作ろうと思ったんですが、放置しているとセッションがタイムアウトしてアプリが止まってしまう。

 

どうしたらいいか?

定期的にブラウザを更新するとタイムアウトしないみたいです。

 

案1 Chrome拡張機能で定期的に更新する

ブラウザに自動更新の拡張機能を入れて、リフレッシュさせる。

これでセッションは切れないはず。

 

2 タイマー+Launch()する

一定時間ごとにLaunch()して新しいアプリを開いてしまう。開いてたやつはExit()しておく。

ただ、残念ながら別タブで開いてしまうためあまりよろしくない。

 

一長一短ありますが上記のどちらかで対応しましょう。

Power Automate x MSGraphでTeamsのチームにメンバーを追加する

必要なアクセス許可

今回必要なアクセス許可の種類は以下です。

GroupMember.ReadWrite.All

事前にアクセス許可を設定しておきましょう。

 

Teamsのチームに追加する

下記のサンプルのようにするとチームに追加することができます。

 

チームへ追加 サンプル

{

    "requests": [

      {

        "id"1,

        "url""/groups/{GroupId}/members/$ref",

        "method""POST",

        "headers": {

          "Content-Type""application/json"

        },

        "body": {

          "@@odata.id""https://graph.microsoft.com/v1.0/directoryObjects/{UserId}"

        }

      }

    ]

}

 

f:id:botherntu:20200112084121p:plain

 

チームへ追加 パラメータの解説

url内のidGroupIdを指定します。{}は不要です。

body内のidUserIdを指定します。{}は不要です。

 

ここまででチームへ追加することができます。が・・・

 

Docs参考にしてもできない?

Docsを参考にしてもうまくいきません。@付きパラメータがエラーを吐いてしまうためです。

@@にすると解決します。(サンプルでは解決済み)

 

実行するとOffice365Groupに追加される

上記を実行すると、Azure ADでグループに追加できたのを確認できます。

 

Teams反映には時間がかかる

ただ、すぐにはTeamsには反映されません。反映には最大2時間かかるようです。

ご注意ください。

 

参考URL

グループにメンバーを追加する リファレンス

https://docs.microsoft.com/ja-jp/graph/api/group-post-members?view=graph-rest-1.0&tabs=http

 

Office 365 グループおよび Microsoft Teams

https://docs.microsoft.com/ja-jp/microsoftteams/office-365-groups#group-membership

 

MS Flow doesn't allow adding @ sign in the body of HTTP Action

http://www.suhail.cloud/2018/03/ms-flow-doesnt-allow-adding-sign-in.html

Power Automate x MSGraphでメンバーとしてユーザーを招待する

必要なアクセス許可

今回必要なアクセス許可の種類は以下の2つです。

User.Invite.All

Directory.AccessAsUser.All(ゲストで招待する場合は不要)

事前にAzureADでアクセス許可を設定しておきましょう。

 

ユーザーをメンバーとして招待する

以下のような感じで実行するとユーザーを招待することができます。

 

ユーザの招待 サンプル

{

    "requests": [

      {

        "id"1,

        "url""/invitations",

        "method""POST",

        "headers": {

          "Content-Type""application/json"

        },

        "body": {

          "invitedUserEmailAddress""abc@gmail.com",

          "inviteRedirectUrl""https://www.office.com/?auth=2",

          "invitedUserType""Member",

          "sendInvitationMessage"true

        }

      }

    ]

  }

 

ユーザの招待 パラメータの解説

invitedUserEmailAddress:必須

→招待するユーザーのメールアドレスを指定します。必須です。

 

inviteRedirectUrl:必須

→招待後リダイレクトする先を指定できます。任意のページを指定できますが、空にすることはできません。

 

invitedUserType

→招待ユーザーの種類を指定できます。初期値はGuestです。ゲストでよければ指定する必要はありません。

 

sendInvitationMessage

→招待時にメールを送るか否かの設定です。初期値はfalseです。メールを送る必要がなければ指定する必要はありません。

 

上記パラメータをカスタマイズして使用してください。

他にも必要に応じてパラメータを設定することができます。

 

メンバーとして招待するために必要な権限

ゲストではなくメンバーとして追加するには、実行ユーザーにグローバル管理者権限が必要になります。

加えて、AzureADのアプリケーションのアクセス許可ではDirectory.AccessAsUser.Allも追加します。

これはアプリにユーザーと同様のアクセス権をもたせるものです。

 

権限がない場合はゲストでのみ招待することができます。

 

 

ここまででユーザーの招待をすることができます。

 

Batch 
O 
body 
"requests•: 
"'Invitations", 
•method•: "POST", 
"headers•: { 
•Content-Type•: "application/json• 
•invitedUserEmailAd dress": 
•inviteRedirectUrl•: "https://wmv.office.com/?auth=2", 
•invitedUserType•: "Member", 
•sendlnvitationMessage": true

 

招待したユーザーID

応答のinvitedUserのidから招待するユーザーのIDを取得することができます。

Power Automateで続けて処理をする場合はこのユーザーIDを使うことができますね。

 

招待後の動作について

実行すると、ユーザーへ招待メールが送られます。リンクからアクセスすることでテナントに参加できます。

処理後、リダイレクト設定した任意のURLへ移動します。

 

Azure Active 
Directory ロ コ 
Azure Active Directory 
お 客 様 は 、 次 に 含 ま れ る ア プ リ ケ - シ ョ ン に ア ク セ ス す る た め に 招 待 さ れ ま し た : 
」 PAUG_MM 組 織 
招 待 元 : 
前 田 讖 
は し め に 
い っ て も 上 記 の リ ン ク に っ て ア ク セ ス し て く た さ い 。 
こ の メ - 丿 し は 、 JPAIJG MM の 前 田 誠 (meed&@zee-citizendevsupport.com/ の 代 わ り に 送 信 さ れ ま し た 。 JPAIJG MM 
組 徹 を 信 頼 で き る 場 合 の み 、 こ の メ - ル に 対 応 し て く た さ い 。 こ の メ - ル に は 、 広 き コ ン テ ン ツ が あ る 可 能 性 が あ り 
ま す 。 JPAUG MM 組 か ら の 今 後 の 摺 待 状 か ら 、 い っ て も 読 を 解 除 で き ま す 。 Microsoft の 組 の プ ラ イ バ シ ー こ 
す る 声 明 を 参 降 し て 、 Mic 「 osoft が お 客 様 の デ - タ を 処 埋 す る 方 法 の 詳 細 を ご 確 認 く た さ い 。

 

参考URL

外部ユーザを招待する リファレンス

https://docs.microsoft.com/ja-jp/graph/api/invitation-post?view=graph-rest-1.0&tabs=http

 

Company Administratorについて

https://docs.microsoft.com/ja-jp/azure/active-directory/users-groups-roles/directory-assign-admin-roles

 

ディレクトリのアクセス許可

https://docs.microsoft.com/ja-jp/graph/permissions-reference#directory-permissions

Power Automate フローがソリューションに入っていると外部テナント用MSGraphのアクションが失敗する

外部テナントをMSGraphを使用して操作しようとした際に、どうもうまく動かなかった。

カスタムコネクタ作成時のテストではうまくいっていたのに。

 

下記のようにソリューションに入っていると失敗する。

 

試しにマイフローから作成すると、問題なく動作した。

 

感想

今回はMSGraphのことだったが、他のことでフローが失敗する場合でもソリューションから出して試してみるといいかもしれない。

ちなみに自テナントの場合はソリューションでもちゃんと動作していた。

 

原因は・・・不明です。

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