コルネの進捗や備忘録が記されたなにか

進捗や成果物や備忘録てきななにかを雑に更新していきます。

Power AutomateでPower Apps CardsをTeamsに送ることができるようになりました


スポンサードリンク

はじめに

Power AutomateでPower Apps CardsをTeamsに送ることができるようになったそうです。

powerapps.microsoft.com

なので早速試してみましたので、今回はそのまとめです。

そもそもPower Apps Cardsってなに?という方は前にPower Apps Cardsについてまとめた記事があるのでこちらをご覧ください。

koruneko.hatenablog.com

公式のlearnはこちら

learn.microsoft.com

試してみた

使用するアクション

Power AutomateでPower Apps CardsをTeamsに送るには、まずは"Create card instance (プレビュー)"でPower Apps Cardsのインスタンスを作成する必要があります。

このアクションは"Cards for Power Apps"コネクタにあります。

このアクションで作成されたPower Apps Cardsのインスタンス情報を用いてTeamsコネクタの"Post card in a chat or channel"アクションを利用してTeamsに送ります。

Power Apps Cardsの作成

今回作成したPower Apps Cardsは以下のような感じ。

これは以下のようなJSONで構成されています。

細かいカードの説明は今回省いて、簡単な説明だけ行います。

まず画面ですが、2画面作成してあります。

Adaptive Cardsと何か差別化できないかなーと色々考えて作成しています。(厳密にはこれもAdaptive Cardsなのですが)。

変数は3つ用意しました。

変数名 用途
NowTime Record 現在時刻を設定するための変数
正直変数にしなくてもよかった(後述)
myUserTable Table コメントを追加したユーザーを保存するテーブル
myTask Record Power Automateから値を受けとるための変数

"記録"は"Record"です。
変な日本語訳しないでくれ。マジで。

説明の文章とかならともかくこういうものは英語で記載してくれたほうがわかりやすいと私は思うんですけどどうなんですかね?

テキストラベルに文字列と変数の値を同時に表示させることは2023/03/20時点ではできない?のでわざわざ文字列描画用のラベル変数描画用のラベルで分けています。

"コメントを追加/更新"を選択すると、テキスト入力で入力したコメント + 押したユーザーのユーザー名をmyUserTableに設定しています。

既に登録済みの場合は、追加ではなく更新するようにしています。
この際、Power Apps CardsではUpdate関数やUpdateIf関数は利用できないのでPatch関数で更新をしています。

画面遷移は皆さんお馴染みのNavigate関数で行っています。
ただし、キャンバスアプリのように第二引数以降(アニメーションや変数渡し)は利用できないので注意。

テーブルの文字列表示にはConcat関数で表示させています。

Power Apps Cardsにはギャラリーなんて高級なものはないのでね...

この際にChar(10)とかで改行させたかったのですが何故か動かない...
なぜ...?

ちなみにこの状態で再生を行ってもエラーが表示されて再生が行えません。

Full error:
myTask.title - Error 6-12: Invalid use of '.'
myTask.user - Error 6-11: Invalid use of '.'
myTask.startDateTime - Error 6-20: Invalid use of '.'
myTask.dueDateTime - Error 6-18: Invalid use of '.'
myTask.percentComplete - Error 6-22: Invalid use of '.'

こんな感じで、myTaskに設定した値を参照しようとするとエラーがでるんですよね。
なんでですか。

この状態でもPower AutomateでTeamsに送る分には(多分)支障ないのでいったん無視しています。

フローの作成

フローはこんな感じ

"ユーザー プロフィールの取得 (V2)"アクションまでは特に何の変哲もないフローですのでスキップします。

"Create card instance (プレビュー)"アクションでは、"Card"で作成したPower Apps Cardsを選択します。

選択したカードによって、設定するパラメータが異なってきます。

例えば先ほど作成したカードであれば、"myTask"で作成した変数は値をカスタマイズできるようにしていました。

このようにして作成した変数は上記のような形でフローから値を渡すことができます。

なにも設定されていないカードの場合は"Body"となるようです。

上記でPower Apps Cardsのインスタンスを作成した後、"Post card in a chat or channel"アクションでTeamsへメッセージを送ります。

"Post As"では"Power Apps"を選び、"Card"では先ほど作成したカードを選択しましょう。

なおこのアクションでは現在

  • Channel
  • Group chat

の2種類にしか送ることができない(個人へは送れない)ようです。

Adaptive Cardとなにが違う?

さて、Power Apps Cardsとよく似たものでAdaptive Cardsがありますね。
Adaptive Cardsではできず、Power Apps Cardsではできることはなんなのでしょうか?

ざっと使ってみた感じ以下のようなことがあるかと思っています。

  • Power Fxを利用可能
  • Dataverseをコネクタとして接続可能
  • 画面を分けることができる
  • 変数の値を異なるユーザー間で共有できる

Dataverseを利用しているユーザーは2つ目の利点が大きいかもですね。
Dateverseの値をカードにリアルタイムに表示できるので。(試していない)

また、試してみておーっと思ったのですが、なんと変数の値をユーザー間で共有できるんですよね。

ユーザーA

ユーザーB

なので、このカードのように見た人とその人のコメントをカードに表示させて共有することができます。
(返信でいいのでは?というのは無しでお願いします。)

変数の値は送られたメッセージの右上の三点リーダーから"カードの更新"を選択した場合に更新されます。

この操作があるので、更新用ボタンを用意する必要もなく、また現在時間をわざわざ変数に入れなくてよかったんですよね。

おわりに

このフローのアクションを利用することで、Power Apps CardsをTeamsに送るときにリンクまで一緒に表示されなくなったのが個人的に大きいですね。

手動で送信

フローで送信

このリンク邪魔でしたよね?

3/20週からPower Apps Cardsでの変数と作成が容易になるように更新が入るようですね。

Improved authoring experience
We’ve received amazing feedback during the past few months of public preview and have made major updates to how cards for Power Apps are designed based on what we’ve heard.

With a no/low code editing pane, variables are now easier to create and manage. Rolling out the week of March 20th.

正直その他デザインももっと更新して欲しいというか、変な日本語訳やめてほしいのですが。。。

もし面白そうな使いかたありましたら教えてくださいー


スポンサードリンク