ふらりのメモ書き

Microsoft 365 , Power Platform らへん

【Power Automate】Dataverse の高度なフィルターを簡単に作成する話


Power Automate で Dataverse の「行を一覧にする(List rows)」アクションで FetchXML クエリ を超カンタンに利用する方法をまとめてみました。
※Power Automate の クラウドフローを取り扱います。
※Power Apps の モデル駆動型アプリを利用しますが、カンタンです。
※Dataverse のテーブルは Dynamics 365 Sales のサンプルデータを利用しています。
※今回は長い...長いったら長い。

Dataverse の参照先のテーブルのデータも取得したい

Dataverse で 取引先企業取引先担当者 というテーブルが2つあります。取引先企業取引先責任者 列は取引先担当者のテーブルを参照しています。

Power Automate で取引先企名と取引先責任者名とその方の役職を取得し、「鹿児島市」でフィルターしたデータがほしいを今回は検証します。

こういうデータが取得したい。

Power Automate の 「行を一覧にする」アクション

使うアクションは「行を一覧にする」アクションです。
条件を設定してデータを取得するには、OData クエリと FetchXML クエリ が利用できます。

左がFetchXMLクエリ、右が OData クエリ。

OData クエリ の場合

OData クエリ は Power Automate をやっていく上では避けては通れないけど、ローコードを初めてやった人にはなかなかハードルが高いような気がします。
今回は詳細は説明は割愛します。

ドキュメントはこのあたり。
learn.microsoft.com

FetchXML クエリとは

FetchXML クエリは 「Microsoft Dataverse 独自の XML ベースのクエリ言語」になります。
ちょっと自分で書こうとすると厳しいです。
これを簡単に作成する方法があります。

learn.microsoft.com

FetchXML クエリ を カンタン に 作成!

モデル駆動型アプリを使うと カンタン に作成できるんです。

モデル駆動型アプリ で FetchXML クエリ の取得手順

Power Apps の https://make.powerapps.com/ の ホーム >空のアプリ > Dataverse ベースの空のアプリ(モデル駆動型アプリ)作成 ボタンを押します。

アプリの名前を設定して、作成

Dataverse テーブル を選択し、 次へ

すでにテーブルは作成済みのものを利用するので、既存のテーブルを利用するにチェック し、テーブルを選択します。
今回は 取引先企業 のテーブルを利用します。
あとで操作に困らないように、ナビゲーションに表示する にもチェックを入れておきましょう。
追加 をクリックします。

先ほど追加した 取引先企業 テーブルの 取引先企業ビュー を選択します。
保存し、公開して、再生します。
保存や公開は少し時間がかかります。

列の編集

Dynamics 365 Sales では、Common Data Model で定義されたテーブルを利用します。
取引先企業のテーブルもその一つです。
データを一覧で確認するのがビューなのですが、ビューがいくつか事前に作成されているので、今回は特にフィルターのかかっていない すべての取引先企業 ビューを選択します。

右上の列の追加をクリックします。

今回は、参照先の取引先責任者 の 役職 が欲しいので、関連タブから役職を検索し、取引先責任者(取引先担当者)の役職を選択します。
必要な列の追加が終わったら、閉じるで閉じます。

必要な項目を揃えたら、適用します。

フィルターの適用

続いて、フィルターを設定します。
先ほどの列の編集の隣の フィルターを編集する をクリックします。

+追加 から 行の追加 を選択します。
住所1:市区町村、次の値と等しい、鹿児島県 で設定し適用をクリックします。

再度、フィルターを編集するをクリックします。
FetchXML クエリのダウンロード ボタンをクリックすると、ブラウザで警告が出る場合がありますが、保存で保存します。

ダウンロードしたファイルをメモ帳やVS Code で開き、内容をコピーします。

Power Automate へ貼り付け

Power Automate で 行を一覧にする アクションを追加し、Fetch Xml クエリ の欄に先ほどコピーした内容を貼り付けます。
キャプチャーはわかりやすいように改行入れてみましたが、一行テキストをそのまま貼り付けてもらってOKです。

そして実行。
出力の未加工出力の表示をクリックし、その内容をVisual Studio Code に貼ります。

欲しかったデータが取得できていることがわかります。 赤枠の部分が取引先企業のデータ。
黄枠の部分が取引先責任者(取引先担当者)のデータ。
赤枠は動的コンテンツとして簡単に選択できるのですが、参照先のテーブルはちょっとコツがいります。

抜粋

"value": [
            {
                <中略>
                "name": "アルパイン スキー ハウス",
                "address1_city": "鹿児島市",
                "_primarycontactid_value@OData.Community.Display.V1.FormattedValue": "金城 彩乃",
                <中略>
                "a_2c3f75a16f394536be93b0afedaddc52.jobtitle": "購買課長",
                <以下省略>
             }
]

参照先テーブルの指定

Dataverse からデータを取得した後のアクションで利用する際に、参照先が動的コンテンツで追加できないので、手動で追加します。
@item()?['<キー>'] のように記載すれば、いいので、下記のようになります。
※ちょっとここが難しい。
※環境によってキーが変わる可能性があるので、ご利用中の環境の出力結果をよく確認ください。

参照先の取引先担当者の表示名と役職

@item()?['_primarycontactid_value@OData.Community.Display.V1.FormattedValue']
@item()?['a_2c3f75a16f394536be93b0afedaddc52.jobtitle']

さいごに

FetchXML クエリは頑張ってゼロから書こうとすると難易度が高いですが、モデル駆動型を使うとマウスポチポチ作業でフィルターを作成できるので便利です!
モデル駆動型も最後まで作りきらなくてもよいので、敷居も低いのがポイント!
是非、使ってみてください!

【Power Apps】Dataverse の開発者環境を作成できるようになったぽい話

Dataverse の開発者環境が自由に作成できるようになったらしいので検証してみました。
公式のドキュメントが Blog と Youtube の動画以外一切ないので、今後変わる可能性があります。また、「開発者( Developer )環境」という名称なので、本番運用はダメだと思いますのでその点にもご注意ください。

公開情報はこちら

「Making Dataverse available for all makers 」というタイトルの Blog と Youtube 動画が公開されました。
powerapps.microsoft.com

www.youtube.com

動画の会話をピックアップしてみました。(内容の正しさは保証できません。)

  • 作成者ごとに3つの開発者環境を作成できるようになった。
  • Power Apps Maker Portal、Power Platform 管理センター から作成できる。
  • この環境を取得するために追加のPremiumライセンスは不要で追加コストなし。
  • 環境のコピー、リストア、バックアップ、復元の機能が利用できる。
  • この環境ではPremiumコネクタが利用できる。
  • 複数のアプリケーションを作成できる。
  • 他のユーザーとアプリを共有できる。
  • この環境で他の人を招待して、アプリケーションを作成してもらうことができる。
  • 仮想テーブル、計算フィールド、数式列などDataverseの機能を利用できる。
  • 容量制限は2GB。この2GBはテナント全体の容量から差し引かれない。
  • この環境はユーザーごとの個人的なスペースでテスト開発をできる。(既定の環境でテストするなんで怖いよね。)
  • 開発環境で開発後、サンドボックス環境や本番環境に移行し実運用に移行できる。
  • 開発環境を残したままにしたい場合は、コピー機能でコピーしサンドボックスに移行などができる。
  • Power Platform 管理センターのテナント設定の中から「開発者環境の設定を無効化する」ことでユーザーに勝手に作成されるのを防ぐことができる。
  • 90日間非アクティブな場合は警告が通知され、それから90日後に自動削除されるので実際利用されていない環境の管理は不要。

検証

普段使っているMicrosoft 365 Business Premium の環境でも作成できることは確認できたのですが、試しに試用版を取得してライセンスや何かの設定の影響が少ない状態で検証してみました。(試用版ライセンスは有償ライセンスと同じ動作ができないことがありますのでご注意ください。)
今回は、Microsoft 365 Business Basic の試用版を取得しています。

通常のアプリ作成画面から環境の作成

Power Apps Maker Portal とBlogに記載があったので、通常のアプリ作成画面からも作成できるようなのですが、この機能はまだ実装されていないようで、現時点では確認はできませんでした。

動画を見る限りだと、環境名の部分をクリックすると環境作成のメニューが出てきそうな感じなんですが、通常通りの環境選択メニューでした。
※ 最初にキャプチャー忘れたので、検証後のキャプチャーです。

Power Platform 管理センター から環境の作成 (グローバル管理者編)

Microsoft 365 テナントのグローバル管理者で検証します。
Power Platform 管理センター から 「環境」を選択し、「+新規」をクリックします。

環境の名前、地域、環境の種類を設定します。
環境の種類 は 「開発者」を選択してください。

「保存」をクリックして保存します。

3つまで作成できるとのことなので、3つまで作成してみました。

Power Platform 管理センター から環境の作成 (一般ユーザー編)

管理者権限のない一般ユーザーも Power Platform 管理センターから環境を作成できます。

手順はグローバル管理者と同様です。
Power Platform 管理センター から 「環境」を選択し、「+新規」をクリックします。

はい、作成できました。

管理者ですでに3つ作成していますが、一般ユーザーでも3つ開発者環境が作成できました。

4つ目の開発環境は作成できるのか?

3つまでと言われると4つ目試したくなりますよね。

4つ目を作成してみます。

「ユーザーの開発者環の数が上限(3)に達しました。」とエラーが出て作成できません。

開発者環境はユーザーごとに3つ作成できる。

テナントのDataverse 容量を消費せず、ユーザーごとに開発や環境が3つ作成できるのは便利ですね。

開発者環境を作成させないようにするには

会社によっては、勝手に開発者環境が作成されると都合が悪い場合もあります。
開発者環境を作成させないようする設定してみます。

Power Platform 管理センター から 「設定>開発者環境の割り当て」から「特定の管理者のみ」に設定すると開発者環境が一般ユーザーで作成できなくなります。

試しに一般ユーザーで環境を作成してみます。
作成しようとするとエラーになり、作成できません。

開発環境のバックアップ、復元、コピー、リセット

動画にもありましたが、開発環境をバックアップ、復元、コピー、リセット することができます。
いろいろ設定して、初期化したいなぁということがしばしばあったのですが、リセット機能があるのはいいですね。

さいごに

今回の開発環境がユーザーごとに作成できる機能いいですね!
Power Apps のスタンドアロンライセンスを追加購入する前にいろいろ試せて、勉強できる、しかもテナントの容量を消費しないのがステキです。

既存のPower Apps Developer Plan はどうなるのかや詳細なドキュメントがまだ公開されていないので今後の追加情報が気になりますね。

【SharePoint】PowerShell で 接続する


昨年末に検証していた SharePointPowerShell で接続するメモ書きです。

PowerShell での接続設定の確認

公式のドキュメントに記載のある方法で確認していきます。

learn.microsoft.com

SharePoint Online Management Shell のインストール

インストールコマンドのコピー

PowerShell ギャラリーにアクセスします。
www.powershellgallery.com

Microsoft.Online.SharePoint.PowerShell の Install Options > Install Module のコマンドのコピーボタンをクリックします。

Install-Module -Name Microsoft.Online.SharePoint.PowerShell  

管理者権限で PowerShell 起動とコマンドの実行

スタートメニューより、「PowerShell」と検索し、「Windows PowerShell」 を 「管理者として実行する」 を選択し管理者権限で実行します。
※キャプチャーはWindows 11 Pro 22H2 の画面です。

先ほどコピーしたコマンドを貼り付けて実行します。
'PSGallery'からモジュールをインストールしますか? は 「Y」と入力し、エンターキーを入力します。

SharePoint Online Management Shell のインストール は 以上で完了です。

インストールバージョンの確認

ドキュメントに記載のあるコマンドですが、下記を実行するとインストールバージョンが確認できます。

Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ListAvailable | Select Name,Version

SharePoint に接続する

MFA(多要素認証)が有効な場合の接続の場合です。
contoso 部分を自身のテナントの設定に変更して実行します。

Connect-SPOService -Url https://contoso-admin.sharepoint.com

URLの部分は SharePoint 管理センターにアクセスしたときのURLと同じになります。

PowerShell で コマンドを実行します。
認証が求められたら認証してください。

接続の確認

SharePoint 全体の設定を確認してみます。

Get-SPOTenant

実行すると、SharePoint の設定値が確認できます。

接続の切断

使い終わったら、接続は切りましょう。

Disconnect-SPOService

learn.microsoft.com

関連コマンド

アップデート

SharePoint Online Management Shell を指定してアップデート。

Update-Module -Name Microsoft.Online.SharePoint.PowerShell

他のモジュールもまとめてアップデートすることも可能。

Update-Module

Power Apps のモジュールが更新されました。

Update-Module の詳しい使い方はこちら。
learn.microsoft.com

インストールされているモジュールの確認

Get-InstalledModule で 現在インストールされているモジュールが確認できます。

Get-InstalledModule

learn.microsoft.com

モジュールのアンインストール

もうこのPCでは設定しないのであれば、モジュールを削除することもできます。

Uninstall-Module -Name Microsoft.Online.SharePoint.PowerShell  

learn.microsoft.com

さいごに

PowerShell で操作できないと設定できない項目があるので、これでやっと操作できるようになりました。
さて、共有リンクの設定変更してみようかしら。

それでは、よい SharePoint ライフを!

【Power Platform】Microsoft Dataverse for Teams の話 (環境編)


1年前に書いた Microsoft Dataverse for Teams の資料の補足を書いてみた話です。
今回は環境についてのメモ書きです。

Microsoft Power Automate Advent Calendar 2022 カレンダー3 18日目!
qiita.com

1年前に書いた資料

とてもありがたいことに、現時点で60.2Kビュー閲覧頂いているのがこちらの資料。
公開した当時よるも、最近伸びているので Microsoft Dataverse for Teams の利用か検討が増えてきているのかもしれませんね。
www.docswell.com

環境について

作成できる環境数

作成できる環境数はよく聞かれます。

作成できる環境数は、Dataverse for Teams が利用できる Microsoft 365 ライセンスを1個もっていると5つの環境が利用でき、20ライセンスごとに1個追加で環境を作成できると公式ドキュメントに記載があります。


引用 : Microsoft Dataverse for Teams について - Power Platform | Microsoft Learn

Dataverse for Teams の場合、Teams のチームと環境が紐づきます。

この環境での Power Platform 要求数は別途付与や独立しているわけではなく、保有のライセンスで提供されている Power Platform 要求数の制限に含まれる点には注意が必要です。

flali.hatenablog.com

flali.hatenablog.com

環境の作成

Teams のチームが100個あると自動的に100個の環境が作成されるわけではなく、明示的な環境作成の操作が必要です。
環境の作成は Teams から行います。

引用 : Power Platform のライセンスに関する FAQ - Power Platform | Microsoft Learn

こちらに手順の記載があります。
learn.microsoft.com

Power Apps アプリの追加

まずは、Teams に Power Apps アプリを追加します。(この操作は1回実施すればOKです。)
Teams の左メニューのアプリ> 検索バーで Power Apps と検索し、「Power Apps」アプリをクリックします。

「追加」をクリックし追加します。

環境の新規作成

先ほど追加した、Power Apps アプリをクリックします。
ビルド > 作成 をクリックします。

アプリの作成と表示されますが、環境を作成したいTeams のチームを選択します。
作成 をクリックすると環境の作成を開始します。

「準備しています」は閉じてしまって問題ありませんので閉じます。
環境の作成に少し時間がかかります。

Teams で通知が来るのですが、この時点ですぐ見えてくるわけではないので、作成した環境が見えなくても、しばらくすると表示されますので待ちましょう。

はい、表示されました。
「Power Apps を使用する準備ができました」とありますが、Dataverse for Teams で利用する Power Apps や Power Automate はここから作成できます。

過剰に作成できてしまった環境に注意

ライセンス数によって作成できる環境に制限があるはずなのだが、どうも過剰に環境が作成できてしまう...
できるから使った良いではないので、適正な利用数の範囲で利用するように運用では注意が必要ですね。

ライセンス数だと6環境が制限だけど、8環境作成できてしまっていたテナントのキャプチャー。どういう動作になるんだろう...
Dataverse for Teams が使える有償ライセンスがあると、組織の制限の容量と環境数が増えるようです。

非アクティブな環境が自動削除される

ちょっと前(2022年10月)に始まったと思ったら、あまりに突然で一時停止していた、非アクティブなDataverse for Teams 環境の自動削除が先日(2022年12月5日)より再開。

jpdynamicscrm.github.io

learn.microsoft.com

即削除ではなく、ユーザー活動のない状況の通知、環境の停止、削除警告、削除とちゃんとフェーズを踏んでから削除されるのでそんなに慌ててる内容ではないですが、通知のメールが英語なのとチーム管理者(所有者)不在のチームなどは気付きにくい可能性があるので注意が必要ですね。

あと7日で環境を無効化しますよ通知はこんな感じでした。
7日経過すると無効化し、30日後に環境が削除されます。

製品条項にも書いてありますね。2022年12月版


www.microsoft.com

さいごに

まだ、書きたいことがガガガガ...なんですが、時間がないので今回はここまで。 Dataverse が無償で使えるというわけではなく、かなり機能制限されているので、制限をよく理解して使うのが大事な気がしています。
また、Dataverse for Teams は本来制限されているはずのことができてしまうことがしばしばあるので注意が必要ですね。

【Power BI】Power Platform 要求数とやらのレポートを作成してみた話


Power Platform 要求数のレポートが確認しにくかったので、Power BI でレポート作成してみました。

本日2個目の Blog 投稿です。(初かな?)

Microsoft Power BI Advent Calendar 2022 11日目! qiita.com

Power Platform 要求のレポート見るのが大変

CSVでリストが取得できるだけなので、確認がたいへんです。
今回はこれをPower BI でレポートにしようと思います。
【Power Platform】Power Platform 要求使用状況の情報を表示する(プレビュー)の話 - ふらりのメモ書き

データの取得

今回利用するデータはこんな感じで取得します。
Power Platform 要求数のレポートが自動でとれないので、手動で取得します。(ここが自動的に取得できると楽なんだけどなぁ)
SharePoint リストの保存したデータを Power BI の Power Query で取得します。

データの取得方法は、こちらの Blog が参考になります。

Power Platform 要求 レポートの取得
flali.hatenablog.com

Azure AD ユーザー情報の取得
flali.hatenablog.com

スタースキーマ

スタースキーマを意識してリレーションを作成してみます。

learn.microsoft.com

今回、フィルターそんなにしないので簡単なものになりました。
DAX で カレンダーテーブルを追加しています。
SharePoint ドキュメントからのデータの取得やカレンダーテーブルの作成方法などは、調べているといっぱいでてくるので自分のやりやすい方法を探してみてください。(説明が面倒だったわけでは...)

レポートできた!

データが確認しやすいかは置いておいて、ドラック&ドロップでレポートが簡単にできました。 運用しながら、手を加えて使いやすい形にしていこうと思います。

レポート作成して思ったのが、Dataverse へのアクセスがあると結構Power Platform要求が発生しているところが気になりました。
この環境はMicrosoft 365 プランで、Dataverse for Teams を利用している環境です。
この日は、確か500レコードくらい削除した記憶があります。

Power Platform 要求数の多い Dataverse

Power Platform の各サービスの利用には、Power Platform 要求というのが発生します。(Power BI は別かな)
Dataverse for Teams の Dataverse の利用でも CRUD (作成、読み取り、更新、削除) などが発生すると Power Platform 要求が発生します。

Power Platform 要求が発生する主なサービス

参考: 要求の制限と割り当て - Power Platform | Microsoft Learn

今回のレポートを作成した環境では、Microsoft 365 ライセンスの制限の6,000要求を超えた日は1日でしたが、他のテナントでも検証したところ、Dataverse for Teams で テーブルを作成したり、アプリやフローから Dataverse へのアクセスが多くなると結構な頻度で Microsoft 365 のライセンスの制限値を超過していました。

現在は、恐らく制限の移行期間なので、顕著に問題となることは少ない可能性がありますが、今後注意が必要そうですね。(レポートにするとよくわかる。)

さいごに

もうちょっと、全自動でレポート更新まで作成しようと思ったのですが、Power Platform 管理センターで四苦八苦してたら時間も足りず、レポート作成したところまでとなってしまいました。
今後、運用しながら良い方法を探したり、レポートの修正していこうと思います。
ローコードはまずは作成してみて、運用しながら修正や機能追加していけるのが良いですね。

【Power Platform】Power Platform 要求使用状況の情報を表示する(プレビュー)の話


Power Platform 要求使用状況の情報を表示する(プレビュー)機能を試してみた話です。

Microsoft Power Automate Advent Calendar 2022 11日目!
qiita.com

Power Platform 要求数とは?

昔はAPIリクエスト数と呼ばれており、今はPower Platform要求と呼ばれています。

learn.microsoft.com

Power Platform 要求数については過去のblogに記載したので、リンクを貼ります。

Power Automate のフロー単位で確認する方法
flali.hatenablog.com

ライセンスについて記載した記事
flali.hatenablog.com

テナント全体のPower Platform 要求数の確認機能がプレビュー

プレビュー機能ですが、テナント全体の Power Platform 要求使用状況が確認できるようになりました。

要求の制限と割り当て - Power Platform | Microsoft Learn

プレビュー機能でうまく動作していない部分があるようなので、注意が必要です。

確認手順

Power Platform 管理センター > リソース > 容量 のページの下方にある「レポートのダウンロード」をクリックします。

+新規 をクリックし、Microsoft Power Platform 要求 を選択します。

スコープを選択します。今回は「ライセンス ユーザー」を選択して、送信。

レポートの生成に少し時間がかかります。状態が「進行中」の場合は、時間をおいて「最新のステータスに更新」をクリックしてステータスが更新されるか確認します。

状態が「完了」になったら、レポートを選択し、ダウンロードをクリックして、ダウンロードします。
CSV ファイルでダウンロードできるので、開いて文字化けするような場合は、テキストエディターなどで開いて文字コード変更してみてください。

レポートの確認

Excelなどので開いた時のレポートです。
わかりやすいように、2行目にドキュメントに記載のある日本語名を入れてみました。
資格の数量がライセンスごとに設定されている Power Platform 要求数を合算した上限値なのですが、Microsoft 365 ライセンスの24時間ごとの6,000要求とずれているのは謎です。

ちなみに、レポートのCaller ID は Azure AD ユーザーのオブジェクトIDに該当します。

現在は移行期間中

公式のドキュメントを見ると「移行期間中」という文字をよく見かけますが、どうやら移行期間中のようでPower Platform の要求の制限は緩いようです。

Power Automate ライセンスの種類 - Power Platform | Microsoft Learn

Power Platform 要求のレポートがいつ正式リリースになるのかは、不明ですが、このレポートが正式リリースになってから6か月後には厳密な制限になりそうですね。

要求の制限と割り当て - Power Platform | Microsoft Learn

誰でもダウンロードできちゃう

ちなみにこのレポート管理者じゃなくてもダウンロードができます。
全環境のレポートが誰でもダウンロードできるのもどうなんだろうと思うのですが、プレビューなので今後の変更があるかもしれませんね。

さいごに

Power Platform で アプリやフローなどの開発に慣れてくると、どんなロジックにするか、コネクタの制限にひっかからないか、サービス側の制限はなどに気を付けて設計しているケースはあると思います。 現在、移行期間中らしく制限が緩いので、今後、このPower Platform 要求数も考慮する必要はありそうですね。

【Power Automate】divで小数がほしい時の話


ちょっと前に途中まで書いてて、下書きに入ったままになっていたので、公開。 クラウドフローのdiv関数の話。

Microsoft Power Automate Advent Calendar 2022 4日目(カレンダー3)
qiita.com

div関数とは

div は算術関数の1つで除算(割り算)ができます。

docs.microsoft.com

例えば、 div(10,5) の結果は 10 ÷ 5 = 2 となります。

div(10,5)

演算結果が小数になる場合

では、下記のような除算の場合、一般的な算数であれば 10 ÷ 3 =3.33333... となるはずです。

div(10,3)

sしかし、実行してみると、結果は 3 になります。
第一パラメーター、第二パラメーターのどちらも整数を引数とすると、小数を無視して数値が返ってきます。

実行前

実行後

結果が小数でほしい場合は、1つ目のパラメーターか2つ目のパラメーターどちらかに、引数として小数を含んだ数値を設定します。
例えば、今回の場合、3 ではなく、3.0 とすればOKです。

div(10,3.0)

実行前

実行後

さいごに

計算結果が小数になるはずだからでロジックを組もうと思ったら、「あれ、思った結果と違う」となってハマっていました。
integer や float などの型大事ですね。 小数になる場合、どうしても精度の問題があるので取り扱う際は注意が必要ですね。

learn.microsoft.com