MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Dataverse for Teams に いろんなトリガーでデータを登録する

Dataverse for Teams が Office 365 の標準的なライセンスで利用できる、SharePointリストに変わるデータソースになりつつあります。(主観)

今回は Power Apps から直接ではなく、他のサービスから Power Automate を通して Dataverse for Teams にデータを登録するケースを考えます。

1. SharePoint リストにアイテムが追加されたら書き込み

まずは基本を押さえるために、SharePointリストにアイテムが作成されたトリガーを考えます。

最も大事なのは 『Dataverse for Teams に対する操作が発生するフローはすべてPower Apps for Teams から作れ』 です。

普通に既定の環境でフローを作って、Dataverse for Teams にアクセスしようとするとプレミアムライセンスが必要になります。(そもそもアクセスできないかも)

標準ライセンスで Dataverse for Teams を操作する場合には Power Apps for Teams から!

f:id:mofumofu_dance:20210312130841p:plain

あとはいつも通り、トリガーとして SharePoint の「項目が作成されたとき」から始めます。

f:id:mofumofu_dance:20210312131031p:plain

対象となるリストは、フローの作成者がアクセスできれば Dataverse for Teams に対応するグループのチームサイトでなくても構いません。

結構大事ですね。つまりアクセス権をリストとDataverse for Teamsのエンティティで分けられるんです。

さて、書き込みですが、これは「Common Data Service (現在の環境)」コネクター に含まれるアクションを利用します。

f:id:mofumofu_dance:20210312131352p:plain

「Common Data Service (現在の環境)」の中から 「新しい行を追加する」アクションを追加し、元のリストの列と対応させます。

f:id:mofumofu_dance:20210312131846p:plain

これで完成。

繰り返しですが、Dataverse for Teams の環境と、リストのグループは必ずしも一致している必要はありません。

2. Formsの回答から書き込み

グループのFormsのフォームへの回答を転記するのにも、今回のフローは利用できます。

まずはグループのフォームで適当なものを作成しておきます。

f:id:mofumofu_dance:20210312132322p:plain

Power Automate で Formsトリガーを作るときによく躓くのが「Formが見つからない!」です。

これは以前から出ている問題ですが、今のところはForm IDをコピペするしか回避策がありません。

Formsのフォームをブラウザーで開いたときにアドレスバーに表示される FormId=xxxxのxxxx部分をメモしておきましょう。

f:id:mofumofu_dance:20210312132630p:plain

Formへの回答をコピーするときには回答の詳細を取得する必要があります。先ほどメモしておいたFormIdを利用して以下のようなフローを作りましょう。

f:id:mofumofu_dance:20210312133021p:plain

Formへの回答者をレコードのどこからの列にいれておくことも忘れずに。

また、ここでも SharePoint 同様ですが、ここで使う Form は必ずしも Dataverse for Teams と同じ環境/グループのフォームである必要はありません。

おわり

ということで2つの例でDataverse for Teams へのアイテム作成フローをご紹介しました。

ポイントは

  1. Dataverse for Teams の操作を行うフローは Power Apps for Teams から
  2. Common Data Service (現在の環境) のアクションを使う
  3. 元のデータソース と Dataverse for Teams が同じグループに関連付けされている必要はない

でした。

f:id:mofumofu_dance:20210312133801p:plain