SharePoint x PowerAutomate x Teams | タスク管理リスト登録→通知の仕組みを作る ~Part1~

SharePoint x PowerAutomate x Teams | タスク管理リスト登録→通知の仕組みを作る ~Part1~

今回はSharePointで「タスク管理リスト」を作成します。

依頼窓口はTeamsとし、依頼を自動で受付、タスク管理自体はSharePoint側で行います。

今回作ったものは検証段階ですので、今後修正が入る可能性がありますが、悪しからず。

今回作りたいモノ

今回作りたいものは以下の通りです。

①Teamsの「チーム>特定のチャネル」から、作業依頼者が投稿

②新規投稿を受けて、PowerAutomateでSharePointへ作業依頼内容をリスト追加

③リスト追加出来たら、Teamsの「チーム>特定のチャネル」に「投稿完了」の旨を投稿

④その後作業が完了し、リストの状態を「作業中→作業完了」にステータスが変わったら、再度Teamsの「チーム>特定のチャネル」へ「作業完了」の旨を投稿

と言った流れです。

Teams、SharePoint、PowerAutomateを利用するため複雑そうに思えますが、ゆっくり作りましょう。

案件管理に必要な情報

SharePointリストには、テンプレートとして「案件管理」があります。↓

これでOKならば、テンプレートをそのまま流用するのも手です。

今回は練習も兼ねて1から作ってみたいと思います。

今回作るリスト

作業依頼管理リストを作ってみたいと思います。

今回の列は以下のように設計します。

列の種類概要/記入例そのほか
タイトルデータ修正依頼Teamsから取得
状態選択肢[未着手 | 完了]初期値は「未着手」
依頼日日付2022/02/02Teamsから取得
依頼者1行Yamada TaroTeamsから取得
依頼内容複数行(拡張リッチテキスト)2月1日のデータを修正してほしい。Teamsから取得
作業日日付2022/02/03
作業者1行情シス 田中
作業内容複数行(拡張リッチテキスト)2月1日のデータを修正しました。
作成者(←システムで自動入力)自動
更新者(←システムで自動入力)自動
メッセージID1行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」と記載した場合、どのような挙動になるのでしょうか?

結果は以下の通りです。

タイトル=サブヘッド、本文=アナウンス だということが分かりました。

通知も問題なく行われます。

次回の記事では、作業完了通知の作り方を検証します。

以上です。

エラー: データの取得に失敗しました。