LoginSignup
12
14

More than 3 years have passed since last update.

MS365サービスだけで申請のワークフローを作る

Posted at

はじめに

世の中には様々なワークフロー製品がありますが、それらのものをMS365で実装できないかと考えました。

要件

  • 申請するユーザから予め作成されたFormsで申請をしてもらう
  • 申請の内容が申請を受ける部門のPlannerタスクとして登録される
    • 受けた申請を忘れずに管理をできるようにするため
  • 申請の内容が申請を受ける部門のSharePointリストに登録される
    • 受けた申請を後から確認できるようにするため
  • 申請内容を処理した後Plannerタスクを完了にすると、SharePointリストの内容に完了者と完了日が追加される

利用するサービス

  • Forms
  • PowerAutomate
  • Planner
  • Teams
  • SharePointOnline

作業内容

Formsで申請に必要な項目を作成する

例えば、以下。
- 期日
- 部署
- 作業内容
- 期限
- その他

screencapture-forms-office-Pages-ResponsePage-aspx-2020-08-22-22_41_58.png

SharePointOnlineのリストを作成する

Formsの内容に加えて、あとで監査などをすることを考えて以下を追加する。
- タイトル
- 対応者
- 対応日

スクリーンショット 2020-08-22 22.45.40.png

Plannerのプランを作る

なんでもOK。とりあえず作る。

スクリーンショット 2020-08-22 22.47.51.png

PowerAutomateでフローを作る

ここからはやや複雑なので、少し詳細に説明。
まずは、申請した時にSharepointリストに情報を入れて、 Plannerタスクを作る処理を作成する。

PowerAutomate画面で自動フローの作成を選択

トリガーはFormsの新しい応答が送信される時、にする。

スクリーンショット 2020-08-22 22.52.32.png

フォームIDに先ほど作成したフォームの内容を入れる

スクリーンショット 2020-08-22 22.53.35.png

Formsの応答の詳細を取得するステップを追加する

スクリーンショット 2020-08-22 22.55.46.png

フォームIDには先ほどと同じフォームを選択、応答IDには応答IDを選択

スクリーンショット 2020-08-22 22.56.55.png

タスクを作成するステップを追加する

スクリーンショット 2020-08-22 22.58.13.png

パラメータを入力する。

  • グループIDは、プランの存在するグループ。プランIDは先ほど作成したプラン。
  • タイトルは、単純に「作業内容」だけでも問題ないのだが、せっかくなので部署と期限も入れておき、わかりやすくしておいた。
  • 開始日時が入っていないが、これを入れると終了日時との整合性がないと(開始日時<期限日時)でないとエラーになるので、いったんエラー可能性を下げるため入れないことにした。
  • バケットIDはプランの中のカテゴリのようなもの。デフォルトはTodoのみ。

スクリーンショット 2020-08-22 23.02.21.png

※ 期限日時にFormsの内容を入れようとしてもデフォルトでは出てこない。選択肢の上にある「もっと見る」を押すと出てくる。(非常にわかりにくい)

スクリーンショット 2020-08-22 23.08.39.png

SharePointの項目作成のステップを追加する

スクリーンショット 2020-08-22 23.06.35.png

項目を入力する。

  • 対応者と対応日は、申請後作業したあとに入力するものにするので、空白のまま。
  • その他はFormsの内容をそのまま流用している

スクリーンショット 2020-08-22 23.17.30.png

Plannerのタスクの詳細更新のステップを追加する

スクリーンショット 2020-08-22 23.19.40.png

ここが少しテクニカルな部分になるが、申請を受けて作業したあとに、自動でSharePointリストを更新するためには、SharePointリストに追加したリストのIDが必要となる。
そのため、リストIDの情報をタスクの詳細に入れておくというもの。

プランのタスクIDを入れる

やや見つめるのが難しいので、キャプチャを貼っておく。
スクリーンショット 2020-08-22 23.22.55.png

説明に、SharePointリストアイテムのIDを入れる。

スクリーンショット 2020-08-22 23.24.24.png

Teamsのメッセージを投稿ステップを追加

一応、通知はしましょうということで、Teamsメッセージを投稿

スクリーンショット 2020-08-22 23.26.10.png

ここまでで、申請したものがSharepoint、Planner、Teamsに連携されることになります。
次からは、申請を受けて作業したあと、完了したことをSharePointに通知する処理です。

自動フローの作成で、タスクが完了した時をトリガーにして作成

スクリーンショット 2020-08-22 23.36.01.png

グループIDとプランIDはこれまで作成したもの。

スクリーンショット 2020-08-22 23.34.53.png

タスクの詳細を取得するステップを追加

SharePointリストアイテムを特定するためのIDが入っているタスクの詳細を取得
引数には、完了したタスクのIDを設定。

スクリーンショット 2020-08-22 23.35.20.png

変数を初期化するステップを追加

このあとSharePointリストアイテムを更新しにいくが、SharePointリストアイテムのIDは整数型。
タスクの詳細で取得した文字列は文字列型のため、データ型を変換する必要がある。
本ステップはそのデータ型の変換を行う処理。

アクションで「変数」で検索すると変数を初期化するアクションが出てくるため、選択する。

スクリーンショット 2020-08-22 23.39.22.png

  • 名前は適当に設定。種類は、整数にする。
  • 値は、「式」からint(value)を選択
  • そのあとで、動的なコンテンツから「説明」を選択
  • すぐしたのOKを押す

スクリーンショット 2020-08-22 23.42.36.png

スクリーンショット 2020-08-22 23.43.08.png

SharePointリストの項目の取得ステップを追加する

スクリーンショット 2020-08-22 23.45.52.png

SharePointの項目の更新ステップを追加する

スクリーンショット 2020-08-22 23.48.16.png

  • IDには、アイテムIDを入れる
  • 対応者、対応日以外は取得した内容をそのままセットする
  • 対応者は、タスクの割り当てられたユーザを設定する
  • 対応日は、タスクの完了日時にする

スクリーンショット 2020-08-22 23.50.36.png

以上で、PowerAutomateの設定は完了。

挙動確認

Formsで申請を提出

screencapture-forms-office-Pages-ResponsePage-aspx-2020-08-22-23_53_46.png

Teamsで通知される

スクリーンショット 2020-08-22 23.55.01.png

Plannerでタスクが作られる

スクリーンショット 2020-08-22 23.57.10.png

ここで、作業者を特定するために、タスクに担当者を割り当てておく。

SharePointリストにアイテムが追加されている

もちろん、対応者と対応日は入っていない。

スクリーンショット 2020-08-22 23.58.07.png

Plannerのタスクが完了するとSharePointリストアイテムが更新される

スクリーンショット 2020-08-23 0.22.37.png

一連の流れが確認できました。

おわりに

監査の統制という面で言えば、SharePointリストの権限を狭くする必要や、バックアップとしてExcelにも記載しておくなど考えることはありますが、申請→作業→クローズという流れはMS365のみでも十分行けるなぁと思いました。

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14