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

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

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

2024年6月 6日 (木)

↓の前回の続きの記事です。

SharePoint Technical Notes : Exchange: 大量メール送信機能 (HVE) パブリック プレビュー (lekumo.biz)

HVEアカウントを作成したら、Power Automate から送信テストをしてみます。Power Automate には SMTPコネクターが用意されているためこれを利用します。

たとえば、「フローを手動でトリガーする」を指定し、次に「SMTPコネクター」のメール送信アクションを追加します。この環境での利用が初回である場合は、接続の作成が必要です。この時に HVE用の SMTPサーバーアドレスやユーザー名/パスワード、SMPTサーバーポート、SSL の有効化を行います。

20240606_154009_2 接続を追加したら、再び「メールを送信する」アクションを選択し、パラメータを指定します。「すべて表示」をクリックすると、CC, Bcc, 重要度、添付ファイル、宛先、件名、ボディを指定します。ちなみに、差出人として自分のメールアドレスを指定するとフロー実行時に「メールボックスへのアクセス権限がない」とエラーになります。大量メール送信であるため、通常は送信専用アカウントとすることになるため差出人は空を指定しておく方がよいでしょう。

20240606_154031 以上で、あとはフローを実行するだけです。

20240606_154237

2024年5月28日 (火)

Power Platform の製品エンジニアリング チームはそうとウェアを更新しており、修正とマイナーまたはメジャーアップデートを含む更新は毎日もしくは毎週行われています。ただし、すべての地域の顧客環境に更新を展開するには数日から数週間かかることもあるわけです。

Microsoft は顧客からフィードバックを得るために Power Apps プレビュープログラムを用意しており、これを利用するためには、従来は、組織内に「米国(プレビュー)」という地域を選択した環境を作っておくというのがこれまでのアプローチの一つでした。この環境を利用することで、数日間の間、最初に機能が展開されるためユーザーは新機能をいち早く把握でき、フィードバックできたのです。

Photo

ですが、現在、環境を新規に作成する際に「米国(プレビュー)」という地域は選択肢から削除されています。その代わりに早期リリースサイクルの環境というものが新たに利用できるようになっています。

早期リリースサイクル環境 - Power Platform | Microsoft Learn

新規に環境を作成するときに地域とは別に「新機能を早期に取得する」オプションをオンにすることで早期リリースサイクル環境になります。20240528_130345

現時点では、このオプションを選択できる地域は限られており、2024年5月28日現在では以下の地域のみになっているようです。

  • 米国
  • ヨーロッパ
  • オーストラリア
  • カナダ

ちなみに、従来の「米国(プレビュー)」には Dataverse データベースは追加できませんでしたが、この新しい機能は Dataverse データベースの追加も可能です。

どの環境が早期リリースサイクルを採用しているかは Power Platform 管理センターの「環境」一覧にある「リリース サイクル」列で確認できます。

20240528_184355

2024年5月15日 (水)

Photo

SharePoint サイトで作成するページにはコメント機能があります。既定ではオンになっています。うまく利用すれば、閲覧者とのコミュニケーションの場として利用できます。

とはいえ、コメントが不要なケースもあります。その場合、ページ単位で有効・無効にはできます。それ以外にテナント全体で一括でオフにすることもできます。が、コメント機能が不要なのは自分が利用しているサイトだけで組織全員がどう考えているかまで把握できないものです。そこでサイト単位でオフにできないかという話になってきます。

実際にサイト単位での無効化はできるのですが、これはAPIを経由する必要があるため PowerShellなどを使わないといけません。SharePoint サイトを利用しているユーザーのほとんどは PowerShellに精通してはいないでしょうから、この選択肢をとるのもなかなか難しい。

そこで比較的ユーザーとして手軽な手段として Power Automate を使う方法を紹介します。Power Automate の SharePoint コネクターには「HTTP要求を送信」するアクションがあります。これを使うと SharePoint の REST APIを利用できます。

フローの作り方

今回は手動でトリガーするフローにします。次のようにフローを作成します。

20240514_193452

「SharePoint にHTTP要求を送信します」アクションは次のように構成します。

20240514_193633

まず、目的のサイトのURLを指定します。方法は POST を選択します。URIは「_api/web」と指定します。これで SP.Webオブジェクトを操作できます。

「すべてを表示」ボタンをクリックして、ヘッダーやボディの入力画面を表示します。

ヘッダーは次のように指定します。X-HTTP-Methodは大文字で “MERGE” を指定します。

Accept application/json;odata=verbose
Content-Type application/json;odata=verbose
X-HTTP-Method MERGE
If-Match *

ボディは次のようにJSONを指定します。CommensOnSitePagesDisabledプロパティの値を true にすることで無効化します。再び有効化したければ false にします。

{
"__metadata":{"type":"SP.Web"},
"CommentsOnSitePagesDisabled":"false"
}

以上でフローは完成です。

実行を試す

動画で確認してみてください。


YouTube: SharePoint ページ上のコメント機能をサイト単位でオフにする