Microsoft Flow にある SharePoint コネクタを見ていたところ「コンテンツの承認状態を設定します」というアクションを見つけました。はは~ん、これで SharePoint のドキュメント ライブラリに保存されたドキュメントの承認ワークフローを作れば良いんだな?と思い試してみたところ、ちょいと工夫が必要そうだったのでメモを残しておきます。
ちなみに、「コンテンツの承認状態を設定します」アクションのドキュメントは下記のリンク先ですね。
SharePoint – Connectors | Microsoft Docs – Set content approval status
https://docs.microsoft.com/ja-jp/connectors/sharepointonline/#set-content-approval-status
ドキュメント ライブラリを設定する
まずは、ドキュメント ライブラリが必要だろうということで、SharePoint Online モダン サイトの「コミュニケーション サイト」を作成し、ドキュメント ライブラリを作成したあと、ライブラリの設定から「バージョン設定」で次のようにしました。「送信されたアイテムに対してコンテンツの承認を必須にする」を「はい」に変更です。
これでライブラリには「承認の状況」という列が自動的に追加されます。
Microsoft Flow でフローを作成する
フローを作っていきます。トリガーとして SharePoint コネクタの「選択したアイテムの場合」トリガーを追加してライブラリを選択します。が、ライブラリが選択できません。
始まって早々に挫折しかけたのですが、どうやらドキュメント ライブラリ自体の ID(GUID)を指定すると動くらしいので、そのように設定してみます。
ライブラリ自体の ID は、ドキュメント ライブラリに戻ってライブラリの設定を開くと、ブラウザのアドレス バーから拾うことができます。
これを設定します。
なんとか持ちこたえました。つぎに、とりあえず「コンテンツの承認状態を設定します」アクションの動作を確認しようとそのままアクションを追加してみます。
これでフローを保存して実行してみます。「選択したアイテムの場合」トリガーを利用した場合は、フローの実行は、ドキュメント ライブラリの画面上から行います。「Flow」のメニューの中に、Microsoft Flow で作成したフロー名が表示されます。
実行すると、期待通り(?)さっそくエラーです。フローの実行履歴には、つぎのようにエラーが出ていました。
エラー メッセージは「コンテンツの承認状態を設定するために使用されているこのアイテムの ETag が一致しません。操作を完了する前に、アイテムの内容が変更されている可能性があります。」でした。ETag をアクションに含める必要があるのでしょうか?この聞きなれない ETag ですが、誤解を恐れずに言うと、ドキュメントが上書きされていないかを検証するための印みたいなものです。今回のような承認ワークフローの場合だと、承認を待っている間にドキュメントが編集されていないかを確認するみたいな使い方になるかと思います。(たぶん)
そんな ETag を取得するには 2 つのアクションが必要になります。「ファイルのプロパティの取得」アクションと「ファイル メタデータの取得」アクションです。つぎのように設定しました。「選択したアイテムの場合」トリガーの「ID」を利用してファイルのプロパティを取得し、「ファイルのプロパティの取得」アクションの「識別子」を利用してファイル メタデータを取得します。そうして得られた「ファイル メタデータの取得」アクションの「ETag」を「コンテンツの承認状態を設定します」アクションに設定します。
これを実行すると今度は上手く動作し、ドキュメント ライブラリの「承認の状況」列の値が「承認済み」に変わりました。
苦労しましたが「コンテンツの承認状態を設定します」アクションの動作が分かったので、あとは承認のアクションを組み込むだけです。
とりあえずの完成形
今回は承認者を実行時に指定できるように「選択したアイテムの場合」トリガーに設定を追加しました。承認は「Approvals」コネクタの「Start an approval」アクションを利用できますので、それをフローの中に追加して条件分岐も作ったら完成です。
簡単に出来そうに見えて実はややこしいのが残念ですが、なんとか目的は達成できました。
さいごに
これを実際の運用で利用しようと思うと、作成した承認ワークフローの実行者などを指定する操作が必要になるのですが、フロー自体は(分かっていれば)スグに作成できますね。
今後の主流になるであろう(?)SharePoint Online のモダン サイトに UI も組み込まれていますし、SharePoint Designer ではなく、Microsoft Flow でワークフローを作成することも多くなるかもしれません。
正直なところ、もっと簡単に分かりやすく作成できると良いのですが…。