カテゴリ「Power Automate」の36件の投稿 Feed

2025年2月13日 (木)

Adobestock_53318819

クラウドフローのトリガーにはプッシュトリガーとポーリングトリガーがあることをご存じの方も多いと思います。今回はこのポーリングトリガーがモダンデザイナーとクラシックデザイナーを使う場合とで違いがあるという話です。

が、トリガーの種類を知らない方もいるでしょうから、少し整理しておきましょう。

軽くおさらい

プッシュトリガーは、人の手で直接フローを開始するのでフローの開始のタイミングがはっきりしています。こうしたフローは即時実行されます。Forms コネクターのトリガはブッシュトリガーです。

一方のポーリングトリガーは、「ファイルが更新されたとき」や「アイテムが追加されたとき」など、人の手で直接はフローを開始しないタイプのトリガーです。Power Automate のフローは、これらのトリガーが利用されている場合、指定されたライブラリやリストを定期的にチェックし、変更が見つかったときにフローを開始します。

ポーリングトリガーはもともと実行間隔がライセンスによって違っていました。

プラン 実行間隔
無料 15分
Office 365 用フロー / Dynamics 365 用フロー 5分
プレミアムプラン 1分

クラシックデザイナーとモダンデザイナーでの挙動の違い

モダンデザイナーで自動開始のトリガーを利用する場合は、ポーリングトリガータイプのものはユーザーのライセンスに関わらず、既定では実行間隔が1分になっています。たとえば、SharePoint コネクターの「項目が作成されたとき」のトリガーを確認してみると、次の通り1分です。

20250213_183628

ですが、クラシックデザイナーの場合は最初からクラシックデザイナーに切り替えて、同じトリガーを配置してみるとコードビュー上では interval が5分となっているのがわかります。ちなみに、プレミアムプランを持っているユーザーが作成するとクラシックでも1分です。

20250213_183852

つまり、プレミアムライセンスを持たないユーザーは、モダンデザイナーを使ってフローを作った方が実行が早まるということです。

ということで実験してみました。同じリストに対して2つのフローを作成します。どちらも「項目が作成されたら」フローが動作するようにトリガーをしかけて、メールを送信します。違うのは最初からモダンデザイナーで作成しているのか、クラシックデザイナーで作成しているのかです。

アイテムを新規に追加してみます。すると、先に動いたのはやはりモダンデザイナーで作成した方で、アイテム作成日時とメールの受信日時を比較してみると確かに1分ほどになっています。20250213_213605

しばらくするとクラッシクデザイナーで作成したフローが動きメールが送信されます。メールの受信日時を見るとおよそ5分違います。

20250213_213842

ちなみに、このブログではモダンデザイナーと呼んでいますが、Microsoft Learn をもとにすると単に「クラウドフロー デザイナー」と呼んでいて、古いデザイナーを「クラッシク デザイナー」と呼んで区別しています。※新しいデザイナー画面になったときには、最新のものを便宜的にモダンデザイナーと呼んでいたようです。

将来的にはこのモダンデザイナーのみになる予定で、クラシックデザイナーは廃止される予定ですが、現時点(2024年2月13日に確認している時点)ではすべての機能が移管しきれていないので、もうしばらくはクラシックデザイナーが残りそうです。

2024年11月 6日 (水)

トラブルの原因や発生条件はわからないのですが、とりあえず、Power Platform 環境で起きたトラブルシューティングの顛末を記録しておきます。

----------------------------------

弊社ではPower Apps の研修を定期的にしているのですけれど、受講者の方には最近は専用の開発者環境を事前に作成しておいてそこでアプリ作成をしてもらうようにしています。

そのため、研修の度にリセットして利用しています。

いつものように昨日の午前中に受講者用の環境をリセットしたわけです。で、今日はその環境でアプリ作成をあれこれとしてもらうことにしました。

まず起きたのが午前中にそれぞれに作成した開発者環境が環境の切り替えに現れなくなったというもの。それぞれの開発者環境でのアプリ開発をする前に、たまたま、新機能のキャンバスアプリの同時編集を試していました。その直後だったので、それが何かしら影響しているのかも知れない気もしなくもありません。同時編集のリンクにアクセスしようと、全員が何かしらアクセスできないエラーが起きていたためです。しかも、各アカウントに私のPC上からアクセスすると環境切り替えに目的の環境は出てきていました。そうなると各PC側の問題かと考えます。受講者の方々のPC側の問題かも? ととりあえず、キャッシュクリアをお願いしたのですが状況は改善せず。

今考えると、トラブルの最初はここだったような気がします。

仕方がないので、テナントの管理者である私のアカウントであれば全員の開発者環境はアクセスできるため、各環境のURLをそれぞれに渡して、直接環境へのリンクにアクセスしてもらいました。まずはこれで問題なくアプリが作れるようになったのです。

しかし、午後過ぎに突然、アプリが作成できなくなりました。リセットしていない他の環境では起きなかったので、共通項としては「開発者環境」&「最近リセットした」くらいなんですね。あっ、そういえば、もう一つ、リセットしていないけれど昨日新規に作成した開発環境でも同じ現象が発生していました。

キャンパスアプリを作成しようとすると下記のようにエラーが表示されるのです。

20241106_181920

つい、さきほどまで作成できていましたし、だれも何も設定変更などしていないので、これは明らかにおかしい。ちなみに、こうなると既存のアプリも編集できないし、エクスポートもできません。

ということで、まずは問題が起きているユーザーアカウントに切り替えて、Power Platform 管理センターにアクセスするのですが、本来、ユーザー自身が環境管理者となっているはずの「開発者環境」がそもそも全く表示されません。表示されているのは唯一、既定の環境のみ。

仕方がないので、またまたPower Platform管理者である私が Power Platform 管理センターから問題の生じている各開発者環境にアクセスします。すると環境ハブにはアクセスできるのですが、アクセス権限に問題が生じているのだろうと「設定」画面やセキュリティロール画面にアクセスしようとすると、次のエラーが表示されてしまい何もできなくなってしまう。

「RetrievePriviledgeForUser: The user id xxxxx-xxxxx-xxxxx has not been assined any roles. They need a role with the prvReadOrganization priviledge. ~」

20241106_181515

まぁ、権限がないということなんですが、私がテナント管理者だしPower Platform 管理者だし、これ以上誰も特権は持っていないわけです。さてさて、、、セキュリティ情報がどこか壊れた? 

と、途方に暮れかけていたのですが、一つだけ利用できる設定がありました! 環境ハブのコマンドバーにある「メンバーシップ」メニューです。これが開ける! が、

「現在、管理者を表示できません。再試行する前に[自分を追加する]をクリックして、システム管理者ロールに自分のアカウントを追加してください」

20241106_185529

と表示されます。ということで急ぎ、「自分を追加する」をクリックすると自分自身ともともと指定していたユーザーも自動的に追加されました! 

20241106_185754

これでどうやら復活した模様。無事に設定画面にもアクセスできるようになり、アプリの作成、編集、エクスポートもできるように。また、各ユーザーアカウントからも Power Platform 管理センター上の「環境」に各管理者となっている環境も現れるようになりました。

20241106_195307

原因は全く持って不明ですが、今後、もし似たような問題に直面することがあれば、自分を含めほかの方にも対処療法として知っておくとよいかなと思ったので、ここに書き留めておくことにしました。

ご参考まで。

p.s. ちなみに、アプリが突如作成できなくなった時には、とりあえず問題の起きていない環境もしくは受講者それぞれの組織のテナントでアプリ作成をしてもらい、研修後にあらためて(落ち着いて) 環境の確認をしていたところ、上記の「メンバーシップ」の追加での修正にたどりつきました。

p.s. おいしみ(@ksgiksg)さん / X)さんからの追加情報で、「メンバーシップ」の追加に関しては↓が関係しているのではということでした。

PowerPlatform管理者が環境の管理者に自動割り当てされなくなった #Microsoft - Qiita

確かに、管理者が環境の設定にアクセスできなかったのはこれのようですね。ですが、解せないのはこれを追加することで、環境の管理者として設定していたユーザーがこれまで通り、環境にアクセスできるようになったということですね。管理者の私はともかく、ユーザーは直接関係ないはずで。うーん、たぶん小さいバグでも踏んだ気がします。。。ですが、おいしみさん、この情報はちゃんと読んでいなかったので、情報提供をありがとうございました!!!

2024年9月27日 (金)

Power Platform の HTTP with Microsoft Entra ID コネクターが 2024年8月末ごろに急遽廃止になったようです。現在、Power Automate で確認したところモダンデザイナーではそもそも旧コネクターがでてきません。コネクターの一覧でも "Deprecated" の文字があります。

20240927_182754

後継としてはすでに提供されている HTTP with Microsoft Entra ID (preauthorized) を使うことになります。ただ、API エンドポイントによってはどうも制限がされているようです。私のお客様からも利用できないエンドポイントがあるという話は耳にしています。この辺りは、下記の新旧コネクターの比較記事が詳しいです。

What is the difference between HTTP with Microsoft Entra ID and HTTP with Microsoft Entra ID (preauthorized) connectors? - Forward Forever

なお、Microsoft Learn のコネクター説明のページは 2024年9月27日現在、日本語ページに "廃止" については書かれていません。ただし、英語の方はすでに更新されおり、廃止に言及しています。

HTTP With Microsoft Entra ID (deprecated) [DEPRECATED] - Connectors | Microsoft Learn

ちなみにさきほどご紹介した Forward Forever の記事の下にコメント欄があり、あれこれやり取りされていますが、どうも廃止は急だったようでアナウンスもなかったようですね。私もあれこれ調べましたが、廃止のアナウンスは見つけられませんでした。コメント内でも "サポートに問い合わせたら Microsoft も知らなかったようだ" とも書かれているので、いつの間にか廃止になったようです。コネクターで deprecated になるものはたくさんありますけど、こんなに早く廃止されて使えなくなるというのは珍しいように思います。

ということで、これに関して日本語の情報が見当たらなかったので備忘録として記事にしておきました。

2024年9月26日 (木)

Adobestock_552355848_2

Power Automate では整数または倍精度浮動小数点数などの数値データを扱えます。

たとえば、変数を追加する際にこうしたデータ型を指定できるようになっています。次の画面は英語表記ですが、Integer(インテジャー)が整数、Float(フロート)が倍精度小数点数です。

20240926_153047

計算する

ではこうした数値データを使って計算を試してみましょう。たとえば、10÷5 を計算します。式としてはdiv関数を用い、「div(10,5)」となります。

20240926_150713

結果は2です。

20240926_151012

小数のある割り算

では、小数のある割り算を行ってみましょう。11÷5 を計算するため式は「div(11,5)」とします。

20240926_150850

結果は2.2 となるはずですが、2 となっています。

20240926_151012_2

整数同士の計算となり、結果は整数部分のみしか返ってきません。そのため小数が返ってくることもあることを前提にするために最初から11と5の数字を倍精度小数点数として扱いましょう。これには float関数を使います。式は「div(float(11),float(5))」です。

20240926_151251

結果は2.2となりました!
20240926_151313

ということで、結果が小数になる場合は変数として用意する場合もFloat型として宣言しておく必要があることがわかります。

ちなみに小数は16桁まで扱えます。次の図は割り切れない 1÷3を行っているところです。

20240926_151333

四捨五入

さて、小数を扱う場合、パーセントに置き換えるときなど四捨五入が必要なことがあります。これはどうやるのでしょうか? 試しに次のように 270÷366 を計算してみましょう。

20240926_151632

結果は次の通りで「0.7377049180327869」が返ってきます。

20240926_172735

ではこれを100分率にするためにmul関数を使って100倍し、整数のみにするために formatNumber関数を使います。式は「formatNumber(mul(div(float(270),float(366)),100),'###') 」です。

20240926_151904

結果は 74 となったことがわかります。もともと100倍すれば、73.77... だったわけですから、小数点第一位で四捨五入されたことがわかります。

丸め誤差

倍精度小数点数を使えるということですが、当然、丸め誤差が生じます。試しに「add(float(0.1), float(0.2))」を計算します。

20240926_154219

すると結果は 0.3 ではなく「0.3000000000000004」となります。20240926_154235

そこで利用したいのが decimal 関数です。変数を初期化する際には decimal は選択できないため式の中で利用する必要があります。式を「add(decimal(0.1), decimal(0.2))」とします。

20240926_155159

これにより結果は0.3 となります。

20240926_155217

まとめ

ここまで見てきたように Power Automate フローの中で演算を行う際にはデータ型に注意し、適切な型を明示して利用する必要があることがわかります。

2024年9月25日 (水)

Adobestock_522400980

Power Automate を使って複数の Excel ファイルを一括生成し、それぞれの Excel ファイルで特定のOffice Scripts を実行するようにフローを組んでいたとします。Office Scripts を実行するわけですから、 Excel Online (Business) コネクターを使います。このコネクターには次の2つのスクリプト実行アクションがあります。

  • SharePoint ライブラリからスクリプトを実行する
  • スクリプトの実行

20240925_190937

このコネクターに最初に追加されたのは「スクリプトの実行」であり、スクリプトはユーザーの OneDrive に格納されている前提でした。ですが、そのあと、スクリプトを SharePoint のドキュメント ライブラリに格納して複数ユーザーで共有利用ができるようになりました。そこで新たに追加されたアクションが " SharePoint ライブラリからスクリプトを実行する" です。

20240925_190421

さて、従来からある "スクリプト実行" アクションは、スクリプトがOneDrive (Business) に格納されていることが前提であるため同時アクセスは考慮されていません。

たとえば、ファイル作成をする際に Apply to each を使って処理するときに Apply to each には「コンカレンシー制御」オプションがあります。既定ではオフで最大50まで指定できます。

20240925_190644

これを使えばファイル作成をバトンリレー式に1つのファイルが作成されてから次のファイルを作成するという処理を複数のファイル作成を同時に一斉作成できるようになります。ならば、このオプションを有効にしてファイル作成後にいっきに各ファイルで Office Script も動かそうか考えるわけですが、この場合はスクリプトファイルへの同時アクセスが生じることになりフローはエラーとなります。

ですが、後発のアクションである「SharePoint ライブラリからスクリプトを実行する」を利用する場合は、最初から複数同時アクセスを考慮しているため Apply to each のコンカレンシー制御を有効にしても問題なくフローが実行できます。

試しにコンカレンシー制御をおこなわずに5つのファイルを一括作成してみたところ、Apply to each には42秒ほどかかりました。

20240925_190615

ですが、コンカレンシー制御を有効化したところわずか9秒に短縮されました。

20240925_190724

このようにコンカレンシー制御はフローのロジックによって向き不向きがありますが、うまく活用できればフローの実行時間が短縮できます。