SharePoint x PowerAutomate x Teams | タスク管理リスト登録→通知の仕組みを作る ~Part1~
- 2022.06.13
- SharePoint
今回はSharePointで「タスク管理リスト」を作成します。
依頼窓口はTeamsとし、依頼を自動で受付、タスク管理自体はSharePoint側で行います。
今回作ったものは検証段階ですので、今後修正が入る可能性がありますが、悪しからず。
今回作りたいモノ
今回作りたいものは以下の通りです。
①Teamsの「チーム>特定のチャネル」から、作業依頼者が投稿
②新規投稿を受けて、PowerAutomateでSharePointへ作業依頼内容をリスト追加
③リスト追加出来たら、Teamsの「チーム>特定のチャネル」に「投稿完了」の旨を投稿
④その後作業が完了し、リストの状態を「作業中→作業完了」にステータスが変わったら、再度Teamsの「チーム>特定のチャネル」へ「作業完了」の旨を投稿
と言った流れです。
Teams、SharePoint、PowerAutomateを利用するため複雑そうに思えますが、ゆっくり作りましょう。
案件管理に必要な情報
SharePointリストには、テンプレートとして「案件管理」があります。↓
これでOKならば、テンプレートをそのまま流用するのも手です。
今回は練習も兼ねて1から作ってみたいと思います。
今回作るリスト
作業依頼管理リストを作ってみたいと思います。
今回の列は以下のように設計します。
列 | 列の種類 | 概要/記入例 | そのほか |
---|---|---|---|
タイトル | – | データ修正依頼 | Teamsから取得 |
状態 | 選択肢 | [未着手 | 完了] | 初期値は「未着手」 |
依頼日 | 日付 | 2022/02/02 | Teamsから取得 |
依頼者 | 1行 | Yamada Taro | Teamsから取得 |
依頼内容 | 複数行(拡張リッチテキスト) | 2月1日のデータを修正してほしい。 | Teamsから取得 |
作業日 | 日付 | 2022/02/03 | |
作業者 | 1行 | 情シス 田中 | |
作業内容 | 複数行(拡張リッチテキスト) | 2月1日のデータを修正しました。 | |
作成者(←システムで自動入力) | – | 自動 | |
更新者(←システムで自動入力) | – | 自動 | |
メッセージID | 1行 | 12345657 ←役割は後述 | Teamsから取得 |
クローズフラグ | 値 | [ 0 | 1 ] ←役割は後述 ※規定値:0 | PowerAutomateで更新 |
リストの作成はここでは割愛します。不明な方は前回の記事を確認ください。
Teamsのチャネルから投稿
今回は以下の様な「チーム」に対して、「作業依頼」というチャネルを作成しました。
このチャネルに「新しい投稿」されたタイミングで、PowerAutomateが実行されることを想定します。
新しい投稿
新しい投稿には ①「件名」を追加して入力する方法と②「件名なし」で投稿する方法があるかと思います。
↓件名あり
↓件名なし
いずれのパターンでも処理が走ることが理想です。
PowerAutomate側の設定 ~Teamsで案件受付まで~
今回の大まかな流れは以下の通りです。
①チャネルに新しいメッセージが追加されたとき
今回は以下のチームのチャンネルへの投稿を監視します。
②変数の初期化 および 条件
ここでは、上記で記載しましたが、新規投稿には「①件名がある場合」と「②件名が無い場合」があることから、その際の処理を書いています。
変数V01には、Teamsのメッセージ件名を代入します。
メッセージが空白か否かは以下の式で判定しています。
length(variables('V01'))
長さが「0」ならば空欄ということで、V01には「*タイトル未記入*」という文字列を代入します。
この処理の目的
後続で記載しますが、SharePointに投稿する際に、この「Teamsのメッセージ件名」を「Title」に設定したいと思っています。
SharePointのTitle項目は「空白はNG」ですので、ここでエラー避けをしています。
③項目の作成
SharePointにデータを登録します。以下の様な設定です。
・依頼日:メッセージ createdDateTime
・依頼者:メッセージ from ユーザ displayName
・依頼内容:メッセージ 本文 コンテンツ
・メッセージID:メッセージID
※このメッセージIDですが、Teamsの投稿に対して返信を行う際に利用する重要なIDです。
④チャネル内でアダプティブカードを使用して返信する
Teamsの機能の一つに「アダプティブカード」があります。
投稿に対して「複雑なレイアウト」や「ボタン」などを付与する事ができます。
MS Docsの公式マニュアルはこちら↓
こちらはJson形式で記載する必要があります。
先ず慣れるまではテンプレートを少し変更していくので良いかと思います。
Json自体は以下の様な感じ
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.2",
"body": [
{
"type": "TextBlock",
"text": "投稿を受け付けました",
"weight": "Bolder"
},
],
"actions": [
{
"type": "Action.OpenUrl",
"title": "リンクへ飛ぶ",
"url": "@{outputs('項目の作成')?['body/{Link}']}"
}
]
}
★注意★アクション:チャネル内でアダプティブカードを使用して返信する
アクションは以下の様な感じです。
現時点で謎の使用なのですが、投稿先は「カスタム値を入力」とし、「Channel」と入力する必要があるようです。
通常通り「チャネル」を選択すると、以下のようなエラーをはいてしまいます。
↓以下の様に設定します。
メッセージIDというのが、チャネルに対する投稿1つ1つに割り振られるIDです。
挙動を確認
以下の様な挙動になります。
①新規投稿をする
→ タイトルあり、なしの場合にタイトルが切り替わることを確認
②投稿に対して、PowerAutomateから返信(アダプティブカード)が発行される。
→ 「リンクへ飛ぶ」をクリックすれば、対象の案件リストに飛ぶ
リンクをクリックすると、以下のページに飛びます。
リストは以下の様な表示です。
ちなみに「アナウンス」だったらどうなる?
Teamsのチャネルには、新規投稿の他に「アナウンス」があります。
アナウンスだと、見出し、サブヘッド、アナウンスを記入可能です。
挙動確認
見出しに「作業1」、サブヘッドに「作業2」、アナウンスに「作業3」と記載した場合、どのような挙動になるのでしょうか?
結果は以下の通りです。
タイトル=サブヘッド、本文=アナウンス だということが分かりました。
通知も問題なく行われます。
次回の記事では、作業完了通知の作り方を検証します。
以上です。
エラー: データの取得に失敗しました。
-
前の記事
【祝15,000PV】SharePoint x PowerAutomate | 自動採番機能を作ろう | 採番台帳 2022.06.12
-
次の記事
SharePoint x PowerAutomate x Teams | タスク管理リスト登録→通知の仕組みを作る ~Part2~ 2022.06.13