Power Appsの使い方

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

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 Automate x MSGraphで外部テナント操作用カスタムコネクタを作成する

外部テナントをMSGraphで操作するカスタムコネクタ作成について書きます。

 

Power AutomateとMSGraphを組み合わせると、外部テナントと連動するフローなんかもつくれてしまいます。

 

ざっくり手順

ざっくり、以下のような流れで作成していきます。

AzureADでアプリの登録を行う。

・管理者の同意をもらう。

・カスタムコネクタを作成する。

・各自、自由にMSGraphを使用したPower Automateを作成する。

 

カスタムコネクタを作成するまでの手順はほぼ自テナントでMSGraphのカスタムコネクタを作成する手順と同様です。

下記のリンクにわかりやすい手順が乗っているので、参考にしてください。

 

https://docs.microsoft.com/ja-jp/graph/tutorials/flow

 

いくつか注意点がありますのでここに書いておきます。

 

管理者の同意について

アクセス許可を設定して利用するには、管理者の同意が必要になります。

設定までしても自動で管理者にメールが行ったりはしないのでとりあえずご安心ください。

 

管理者に同意を求める際には、ページのURLを送ればそのままダイレクトで管理者の方も開けるのでリンクを共有するのがいいと思います。

刄 リ ソ - ス 、 サ - ヒ ス 、 ト キ ュ メ ン ト の ( G ャ 
MicrosoftAzure 
ホ - ム > 」 PALJG_MM - ア フ リ の 登 録 > pow 印 A 猷 0n1 e - API の ア ク セ ス 許 可 
・ 0- PowerAutomate - API の ア ク セ ス 許 可 
概 要 
構 成 さ れ た ア ク セ ス 許 可 
ク イ ッ ク ス タ ー ト 
0 
◎ 
maeda@zee-citizendevs... ・ 
JPAUG_MM - 
ア プ リ ケ - シ ョ ン は 、 同 意 の プ ロ セ ス の - 環 と し て ユ - ザ - か 管 理 者 か ら ア ク セ ス 許 可 が 付 与 さ れ て い る 場 合 、 API を 呼 び 出 す こ と が 承 認 さ れ ま す 。 構 成 さ れ た ア ク セ ス 許 可 の - 覧 に は 、 ア プ リ ケ - シ ョ ン に 
必 要 な す べ て の ア ク セ ス 許 可 を 含 め る 必 要 が あ り ま す 。 ア ク セ ス 訐 可 と 同 意 に 関 す る 詳 紙 情 報 
管 理 
十 ア ク セ ス 許 可 の 追 加 
= 乃 ン ド 
つ 認 証 
API/ ア ク セ ス 許 可 の 名 前 
証 明 書 と シ ー ク レ ッ ト 
VMicrosoft Graph 罔 
Ⅲ 
ト ー ク ン 構 成 ( プ レ 台 ー ) 
」 PAUG - MM に 管 理 者 の 同 意 を 与 え ま す 
種 類 
委 任 済 み 
委 任 済 み 
管 理 者 の 同 意 が 必 要 
GroupMember.ReadWrite-All 
ー っ ・ ー の ア ク セ ス 許 可 ー 
user.Read 
0 A 円 の 公 開 
誂 所 有 者 
ロ ー ル と 管 理 者 ( プ レ 台 ー ) 
マ こ フ 1 ス ト 
サ ポ ー ト + ト ラ ブ ル シ ュ ー テ ィ ン グ 
ト ラ ブ ル カ - テ ィ ン ク 
新 し い サ ポ - ト リ ク エ ス ト 
Read and write group memberships 
Sign in and に ヨ d user profile 
△ JPAUG_MM に 何 与 さ れ て

 

テナントIDは自分で設定する必要がある

自テナントの場合は必要ありませんが、外部テナントにつなげる場合はテナントIDを設定する必要があります。ここだけ自テナントの場合と異なるので注意してください。

 

テナントIDは下記の画面で設定します。

 

カスタムコネクタ テスト用body

テスト用のbodyを置いておくので良ければご利用ください。

 

{

    "requests": [

        {

            "id"1,

            "url""/me",

            "method""GET",

            "headers": {

                "Content-Type""application/json"

            },

            "body": {}

        }

    ]

}

 

カスタムコネクタ作成までの手順を行って、無事テストが通れば作成成功です。

一応取得した内容が外部テナントのものか、テナントIDを設定したか確認してください。

 

手順の通りだと自テナントを参照してしまいます。

外部テナントを対象にする場合はテナントIDを設定してください。

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