Power AutomateのAdaptive Cardsで日報を『書かせる』仕組み

調子に乗ってブログ書いてきますあきらです。

これからきちんとアウトプットしていこうと思います。

吉田さんのこの記事↓がキッカケでもありますし、

note.com

お友達のおばちゃんの影響でもあります。(下記リンクの塾のおばちゃん)

encourage-toukadai.com

 

何と言っても色んなコミュニティで活動してる中で

「恩送り」

というのはとても大事だな、と考えその一助になろうと思った次第です。

色んな方に送り、またその恩を送ってもらおうと考えて書くことにします。

 

※本ブログ内容は試験的機能が含まれていますので実用の際は承知願います。

試験的機能をPower Automateで使用する方法はMVPのHiroさんのブログを参照ください。

mofumofupower.hatenablog.com

 

 

 

全体構造

 

本日subjectはAdaptive Cardsってやつですね。

全体像は以下の図になります。

 

-全体像-

f:id:hanakuso365:20210328140112p:plain

①Teamsで定時にfoamが流れてきて、それに対し日付と日報内容を記入する

②日報内容がSPOやdatavereseに登録される

③Power AppsやPower BIに反映されて、それが閲覧、編集される

 

このような仕組みを作っていきます。

 

とりあえず何も考えないで任意のTeamにPower Apps環境を作成する

普通は

DB作成→Power AppsでUI作成&Power Automateで動的処理作成

みたいな順序になると思いますが、今回はDataverseをDBにするため、任意のTeamsにPower Apps環境を作ります。

 

別にSPO環境でもいいですが、日報という色んな人間が一斉に書く恐れのあるものならば、旧CDSであるTeams for Datevereseのほうが適しているように考えます。

SPOでは大量データの管理や大多数の同時アクセスに耐えられるデータベースとは言えない(ってかそもそもDBじゃない)ので実運用で、「ほぼ同時に日報書いたら登録されなかった!」みたいな事態が某弊社でもちょこちょこ起こっています。(放置してるけど)

 

とりあえずPower Apps環境を作成します。

まずTeamsを開き、Power Appsのボタンを押すと下の画面になります。

f:id:hanakuso365:20210328193311p:plain

 

[アプリの作成]ボタンをクリックすると以下画面になるので

作りたいTeam選んで作成、しばらく待ちます。

f:id:hanakuso365:20210328193507p:plain

アプリ名を指定して「作成」ボタンを押します。

f:id:hanakuso365:20210328193549p:plain



たったこれだけでアプリができました!すごい!

ここが結構大事なんですが、

必ず「保存」してください。

Teamsアプリのほうでは基本的にビルドが先に行われるようですが、ブラウザ版のPower Apps builder(だったかな?)では保存して初めて「作成」とみなされるため、今後Power Appsでアプリケーションを作成する場合も癖付けのために保存はしといたほうがいいです。

↓保存のやりかた

f:id:hanakuso365:20210328193710p:plain

「保存」クリックするだけです。

 

DBの作成(Teams for Dataverse)

ここからDBを作成していきます。

アプリケーション作成画面からDBが作成/編集できるなんてすばらしい!!!(他媒体で作ったことないから知らんけど)

サイドバーから「データベース」タブをクリックして、出てきた画面から「データの追加」をクリック、出てきた画面で「新しいテーブルの作成」をクリックします。

f:id:hanakuso365:20210328193804p:plain



こちらが日報を収集するDBになります。

下の画面になりますので名前は任意で付けてください。

「dailyreport」としておきます。

f:id:hanakuso365:20210328193909p:plain

 

「+」ボタンをクリックして、「件名」と「種類」を記述/選択します。

 

以下のように3つ列を作成します。

列名 件名 report day username
詳細 日報のタイトル 日報内容 日付 ユーザーのdisplayname
形式 一行テキスト 一行テキスト 一行テキスト

 

f:id:hanakuso365:20210328194217p:plain

 

 

「閉じる」ボタンを押して登録完了(簡単!)

 

Power Appsを開いた状態で「新しいテーブルの作成」を選択して作成すると、デフォルトで指定されているデータソースが自動的に現在作成したDBに置き換わります。

右上の「▷」ボタンを押すとプレビューできますので、何でもいいので以下のように日報みたいなものを作成してみましょう。

f:id:hanakuso365:20210328194426p:plain

 

f:id:hanakuso365:20210328194457p:plain

まぁアプリとしてはこれで完了にしておきます。

作りこみたい場合は別記事で書いていきたいと思います。

今回はメインはPower Platformなのでねw(めんどうだからってのもあるw)

 

 

右上の「Teamsに公開」というボタンを押し、「次へ」

f:id:hanakuso365:20210328195248p:plain

その後、どのTeamに反映するか聞かれるので、反映するTeamの横の+ボタンを押して「保存」ボタンを押してあげましょう。

f:id:hanakuso365:20210328195339p:plain

 

これでアプリがTeamsで起動できるようになりました。

該当Teamのタブに生成されてると思いますので確認してみてください。

f:id:hanakuso365:20210328195621p:plain



ここまで作ったときのユーザーの声

これで日報データの登録と編集/削除のアプリができました。

実際これだけでTeams登録してしまえば、アプリは動きますが、

 

「日報書くのにいちいちアプリ開かなきゃいけない!忘れる!面倒くさい!」

 

なんて素敵なコメントを周りに言いふらすユーザーがいらっしゃるかもしれません。

実際今回この記事を書くきっかけになったのは、そういう声が多かったからでもありますw

コンセプトとしてはタイトル通り『書かせる』仕組みなので、

 

「問答無用でいつも使ってるツールに配信されれば忘れようがないよね!?(威圧)」

 

って回答を用意した、ということですねwww

 

常々言ってますが、業務改善に必要なのは「ユーザー目線」なので、ユーザーが使い難ければどんな素晴らしいシステムもゴミですわ。

 

というわけでゴミをシステムにしちゃおう!

Power Automateの登場です。

 

Power AutomateでTeamsに日次配信する仕組みをつくる

先ほど作ったアプリの編集画面に戻ります。

方法は

Teamsサイドバーの「Power Apps」をクリック

→最近使用したアプリ 若しくは 「ビルド」タブからTeam名選択するとアプリ一覧が出てくるのでそちらクリック
(ブラウザでさわりたいよーって方は非推奨ですがMVPのHiroさんの記事を参考にどうぞ)

qiita.com

 

さてそれではPower Automateを作成していきます。

ツールタブの「・・・」をクリックして「Power Automate」を選択

f:id:hanakuso365:20210328195901p:plain

→「フローの作成」

f:id:hanakuso365:20210328195925p:plain



そうするとブラウザからPower Automateが開かれます。

(いつもと違う「Team名」での開発環境となっているので注意!作ったものを編集するときは環境を選択してTeam名を選択すれば編集できます)

 

f:id:hanakuso365:20210328200240p:plain

タイトルを「makereport」(任意でOK)にしましょう。

f:id:hanakuso365:20210328200344p:plain

 

トリガーを選択します

定期配信したいので「schedule」トリガーを選択します。

 

 

f:id:hanakuso365:20210328200448p:plain

f:id:hanakuso365:20210328200533p:plain


「間隔」と「頻度」などを選択できる画面になるので、

間隔:1

頻度:週

タイムゾーン:大阪、札幌、東京

設定曜日:(任意選択)

設定時間(時間):17

設定時間(分):00

(タイムゾーンと設定曜日、設定時間はご自身の環境で合わせてください)

f:id:hanakuso365:20210328200846p:plain

 

 

アクションを追加します。

「+新しいステップ」ボタンから「Teams」コネクタを選択

f:id:hanakuso365:20210328201026p:plain

f:id:hanakuso365:20210328201050p:plain


アクション名:「アダプティブ カードを Teams ユーザーに投稿して応答を待機」

※preview機能なのでご利用は計画的に!

f:id:hanakuso365:20210328201133p:plain

受信者:(受け取る任意のメールアドレス)

更新メッセージ:(送信ボタンを押したあとに表示するメッセージ、例:登録されました等)

カードの更新が必要:はい(送信ボタンを押した後にカードの表示を上の更新メッセージにするか否か)

f:id:hanakuso365:20210328201240p:plain

 

 

ここで「アダプティブカードの作成」ボタンをクリックすると

以下のようなadaptive cards designerが開きます。

f:id:hanakuso365:20210328201337p:plain

f:id:hanakuso365:20210328201357p:plain

textblockやInput.Text、Input.Date、ActionSetをドラックアンドドロップして作成します。 

デザイナーの使い方はまたまたまたMVPのHiroさんがまとめてらっしゃるので以下から参照してください(他力本願)

github.com

以下のようなカードを作ります。

 

f:id:hanakuso365:20210328202014p:plain

詳細は省きますが、「id」をきちんと定義しないとDesignerに怒られますので注意してください。

あとでその「id」をPower Platformで取得します。

以下サンプルです。こんな内容で登録したら、「カードの保存」をクリック

f:id:hanakuso365:20210328202105p:plain

 

これで配信する内容が作れました。

では登録した内容を先ほど作成したDBに登録します。

※社員全員に配信したい場合はループ処理が必要になるので別記事で書きます(たぶん)

 

「+」ボタンから「common Data service」を選択

アクション内容:「新しい行を追加する」

テーブル名:(先ほど作ったDateverseの名前)

で指定します。

少し待つと、列名を指定できるようなboxが生成されるため、これに対し先ほどの「id」を「DBの列名」に当てはめていきます。

雷のようなマークを押すと前のアクションやトリガーの内容が取得できますので、先ほど指定した「id」を各列名に合わせて選択します。

f:id:hanakuso365:20210328202216p:plain

 

これでおそらく該当TeamにAdaptive Cardsが配信されました。

f:id:hanakuso365:20210328202314p:plain

 

こちらにそれぞれ記入し「送信」ボタンを押すと先ほどのPower Appsに反映されます。

f:id:hanakuso365:20210328203023p:plain

 

これで仕組みが出来上がりました。

右上の「保存」ボタンから保存をしてください。

f:id:hanakuso365:20210328203131p:plain

 

 

実働チェック

最後に指定した時間にPower Automateが発動すれば完成です。

 

今回Adaptive Cardsで配信したことにより

  • ユーザーの記入忘れを防ぐ
  • 忘れてることに気付ける

という二点を満たすことができます。

 

休日に配信したくない、などの内容がありましたらこれまた別記事で方法を配信したいと思います(意外とめんどくさいので…)

ご自身で工夫ができる方はおそらく「休日テーブル」を別で作成する方法を考えれば構築可能かと思います。

 

おわりに

今回はAdaptive CardsとDataverse for Teamsで作成しましたが、SPO+Outlookやそれぞれ相関交換しても可能です。

 

Adaptivecardの利点は「ユーザーの導線をTeamsやメールに統一できる」ことかと思います。これによりよくある問い合わせの「いろんなアプリがあってよくわからない!」とプンプンしてる方々に対してもアプローチできると思います。

SQLなど連携すれば、社内レガシーシステムに直接connectできるかもしれません。

 

こちらで初めてAdaptive Cardsを知った!という方は、また違う形で工夫やアイディアを、

  • 「次のユーザーのため」
  • 「自分の手記のため」
  • 「ボランティア精神がなせる」

何でも結構ですので、

「恩」を周りにいる初学者ユーザーに送ってください。

私はそれを望みます。

街中でmicrosoft365やPower Platformがあふれることを願っています。

Please send "gratitude" to the beginner users around you.

I hope that microsoft 365 and Power Platform will spread.