はじめに
世の中には様々なワークフロー製品がありますが、それらのものをMS365で実装できないかと考えました。
要件
- 申請するユーザから予め作成されたFormsで申請をしてもらう
- 申請の内容が申請を受ける部門のPlannerタスクとして登録される
- 受けた申請を忘れずに管理をできるようにするため
- 申請の内容が申請を受ける部門のSharePointリストに登録される
- 受けた申請を後から確認できるようにするため
- 申請内容を処理した後Plannerタスクを完了にすると、SharePointリストの内容に完了者と完了日が追加される
利用するサービス
- Forms
- PowerAutomate
- Planner
- Teams
- SharePointOnline
作業内容
Formsで申請に必要な項目を作成する
例えば、以下。
- 期日
- 部署
- 作業内容
- 期限
- その他
SharePointOnlineのリストを作成する
Formsの内容に加えて、あとで監査などをすることを考えて以下を追加する。
- タイトル
- 対応者
- 対応日
Plannerのプランを作る
なんでもOK。とりあえず作る。
PowerAutomateでフローを作る
ここからはやや複雑なので、少し詳細に説明。
まずは、申請した時にSharepointリストに情報を入れて、 Plannerタスクを作る処理を作成する。
PowerAutomate画面で自動フローの作成を選択
トリガーはFormsの新しい応答が送信される時、にする。
フォームIDに先ほど作成したフォームの内容を入れる
Formsの応答の詳細を取得するステップを追加する
フォームIDには先ほどと同じフォームを選択、応答IDには応答IDを選択
タスクを作成するステップを追加する
パラメータを入力する。
- グループIDは、プランの存在するグループ。プランIDは先ほど作成したプラン。
- タイトルは、単純に「作業内容」だけでも問題ないのだが、せっかくなので部署と期限も入れておき、わかりやすくしておいた。
- 開始日時が入っていないが、これを入れると終了日時との整合性がないと(開始日時<期限日時)でないとエラーになるので、いったんエラー可能性を下げるため入れないことにした。
- バケットIDはプランの中のカテゴリのようなもの。デフォルトはTodoのみ。
※ 期限日時にFormsの内容を入れようとしてもデフォルトでは出てこない。選択肢の上にある「もっと見る」を押すと出てくる。(非常にわかりにくい)
SharePointの項目作成のステップを追加する
項目を入力する。
- 対応者と対応日は、申請後作業したあとに入力するものにするので、空白のまま。
- その他はFormsの内容をそのまま流用している
Plannerのタスクの詳細更新のステップを追加する
ここが少しテクニカルな部分になるが、申請を受けて作業したあとに、自動でSharePointリストを更新するためには、SharePointリストに追加したリストのIDが必要となる。
そのため、リストIDの情報をタスクの詳細に入れておくというもの。
プランのタスクIDを入れる
説明に、SharePointリストアイテムのIDを入れる。
Teamsのメッセージを投稿ステップを追加
一応、通知はしましょうということで、Teamsメッセージを投稿
ここまでで、申請したものがSharepoint、Planner、Teamsに連携されることになります。
次からは、申請を受けて作業したあと、完了したことをSharePointに通知する処理です。
自動フローの作成で、タスクが完了した時をトリガーにして作成
グループIDとプランIDはこれまで作成したもの。
タスクの詳細を取得するステップを追加
SharePointリストアイテムを特定するためのIDが入っているタスクの詳細を取得
引数には、完了したタスクのIDを設定。
変数を初期化するステップを追加
このあとSharePointリストアイテムを更新しにいくが、SharePointリストアイテムのIDは整数型。
タスクの詳細で取得した文字列は文字列型のため、データ型を変換する必要がある。
本ステップはそのデータ型の変換を行う処理。
アクションで「変数」で検索すると変数を初期化するアクションが出てくるため、選択する。
- 名前は適当に設定。種類は、整数にする。
- 値は、「式」からint(value)を選択
- そのあとで、動的なコンテンツから「説明」を選択
- すぐしたのOKを押す
SharePointリストの項目の取得ステップを追加する
SharePointの項目の更新ステップを追加する
- IDには、アイテムIDを入れる
- 対応者、対応日以外は取得した内容をそのままセットする
- 対応者は、タスクの割り当てられたユーザを設定する
- 対応日は、タスクの完了日時にする
以上で、PowerAutomateの設定は完了。
挙動確認
Formsで申請を提出
Teamsで通知される
Plannerでタスクが作られる
ここで、作業者を特定するために、タスクに担当者を割り当てておく。
SharePointリストにアイテムが追加されている
もちろん、対応者と対応日は入っていない。
Plannerのタスクが完了するとSharePointリストアイテムが更新される
一連の流れが確認できました。
おわりに
監査の統制という面で言えば、SharePointリストの権限を狭くする必要や、バックアップとしてExcelにも記載しておくなど考えることはありますが、申請→作業→クローズという流れはMS365のみでも十分行けるなぁと思いました。