Power Automate SharePoint

SharePoint稟議申請ワークフロー自動承認【Power Automate】

 

相談者
電子書籍を見て、稟議申請ワークフローを構築しました。
承認者数が多く、タイムアウトが心配です。どうしたらいいですか?
承認のアクションのタイムアウト日数を設定して、自動承認のアクションを追加しましょう。
龍之介

 

目次

第1章 意外と知らないSharePointの便利な使い方(初級)
|Outlookは使わない予約カレンダーの作り方
|外部共有のフォルダー、ファイルを決まった期間で削除
第2章 リストを活用して複雑な承認ワークフローを実現(中級)
|稟議申請ワークフローの概要
|稟議申請ワークフローの仕組みについて
|3つのリスト作成手順
|稟議申請フロー作成手順
|稟議再申請、取下フロー作成手順
第3章 SharePointでWebアプリを使おう!(上級)
|SharePoint上でWebアプリを公開する
|在席確認アプリ機能概要
|在席確認アプリ公開手順
おわりに

 

本の説明

会社の社内ポータルサイトを活用したい方は、「稟議申請ワークフロー」「在席確認アプリ」「予約カレンダー」「外部共有サイト」の4つを活用できます。社内ポータルサイトを構築したら、次はあなたが開発者になって、手順を見ながら4つの作成してください。

 

本書は、稟議申請ワークフローの紹介動画を公開しています。
龍之介

 

稟議申請ワークフローを構築するには、Microsoft365のユーザー情報、グループのメンテナンスが必要です。
SharePointポータルサイト作り方の電子書籍の特典があれば、簡単にメンテナンスできます。
龍之介

 

関連書籍
【電子書籍】SharePointポータルサイト作り方

続きを見る

 

外部委託を考えている方は、ココナラからお気軽に見積り依頼してください。
龍之介

SharePointに承認ワークフローを構築します リストを活用して複雑な承認ワークフローを構築、サポートします

 

この記事は、SharePointポータルサイト活用の「稟議申請ワークフローの補足説明です。

本記事の内容

  • 稟議自動承認
  • 承認者3人作成手順

 

電子書籍を読んでいなくても、承認のアクションの追加など参考になる所があったら使ってください。
龍之介

 

稟議自動承認

 

フローの実行継続時間は30日です。承認者数が多い稟議申請では、◯日と決めて承認のアクションをタイムアウトにします。

フローを作成する前に、承認者に対して気をつけることは、3つあります。

  • 承認要求が◯日でタイムアウトになることを伝える
  • タイムアウトになった承認者と、次の承認者に自動承認だと伝える
  • 決裁者(最終承認者)にはタイムアウトの日(申請日+29日)を伝える(1日短くする)

 

承認要求には、タイムアウトの日数もしくは、日付を追加します。

承認のアクションがタイムアウトになったら、承認者にメールで「自動承認したこと」を伝えて、次の承認者には前の承認者(要求者)は、「自動承認だったこと」を伝えましょう。

 

次に、フローの作成ポイントは、6つあります。

  • 承認の種類は、「1つの応答を待機」もしくは、「最初に応答」にする
  • Apply to eachが追加させないように、firstの式を使う
  • 拒否のメールの後に、「終了」のアクションを追加する
  • タイムアウトの設定をする
  • 並列分岐で自動承認する
  • 実行条件の構成を設定する

 

6つ書きましたが、1番は「Apply to each」を追加させないことです。

「Apply to each」が無いので、承認者は1人になります(すべてのユーザーの承認が必須は使えません)。

「Apply to each」の中には、「終了」のアクションが使えないので、firstの式を使ってループ処理にしないようにします。

 

それでは、承認者3人のフローを作成します。
龍之介

読者以外の方は、firstの式、並列分岐の自動承認、実行条件の構成を参考にしてください。

 

承認者3人作成手順

 

フローの完成から見てみます。

ポイントを吹き出しにしてあるので、チェックしてください。
同一のアクションが続いているので、わかりやすいように吹き出しは分けてあります。

電子書籍の●承認者2人ルートの作成手順と同じようにポイントに絞っての手順になります。
龍之介

 

 

Power Automate承認アクション(承認者1)

 

step
カスタム応答 - 1つの応答を待機

電子書籍では、「最初に応答」で説明したので、1つの応答を待機で「応答オプション項目」をカスタム応答にします。
1つの応答であればApply to eachが自動追加されないと思いましたが、追加されます。

①ケース(承認者3人)の承認者3人ルート追加の後に「開始して承認を待機」のアクションを追加します。
アクション名は、「承認者3人承認1」に変更します。
②承認の種類に「カスタム応答-1つの応答を待機」を選択します。
③応答オプション項目は、2つ追加して、『承認』『拒否』を入力します。
④タイトルに『【稟議申請】タイトル」を入力します。
⑤担当は、変数AuthorizerEmailListの1番目0を追加します。
⑥要求元は、「申請者Email」を追加します。

「次の承認者は、◯◯◯◯さんです。」の前に◯日でタイムアウトになることを伝えましょう。
下のCopyをクリックしてアクションに貼り付けることができます。
龍之介

稟議申請がありました。
添付ファイルを確認して、承認要求に応答して下さい。
承認要求に応答しない場合、3日でタイムアウトになります。
次の承認者は、@{variables('AuthorizerNameList')[1]}さんです。

▼申請者
@{outputs('稟議申請Tableの再取得')?['body/Author/Department']}
@{outputs('稟議申請Tableの再取得')?['body/Author/DisplayName']}
▼起案番号
@{outputs('稟議申請Tableの再取得')?['body/DraftingNo']}
▼稟議事項
@{outputs('稟議申請Tableの再取得')?['body/ApprovalMatter/Value']}
▼内容
@{outputs('稟議申請Tableの再取得')?['body/Contents']}
▼金額
@{formatNumber(outputs('稟議申請Tableの再取得')?['body/Money'], 'C', 'ja-jp')}
▼時期
@{outputs('稟議申請Tableの再取得')?['body/Season']}

 

step
タイムアウトの設定

「開始して承認を待機」のアクションは、3日でタイムアウトにします。

⑦「承認者3人承認1」の右側にある「・・・」→「設定」をクリックします。
⑧タイムアウトに『P3D』(3日)と入力します。
テストをするなら「PT1M」で1分。

 

Power Automate条件

 

step
承認者の応答

条件分岐で「承認者の応答」が「承認」の場合、true「はいの場合」、false「いいえの場合」にします。
ここで、firstの式を使って「承認者の応答」を取得すれば「Apply to each」が自動で追加しません。

①「条件」のアクションを追加します。
アクション名は、「承認者3人承認判定1」に変更します。
②左側の「値の選択」に下記式を入力します。
③右側の「値の選択」には、『承認』と入力します。
真ん中は、「次の値に等しい」のままです。

 
first(body('承認者3人承認1')?['responses'])?['approverResponse']
これで、それぞれに「承認追加」「拒否追加」のアクションと拒否の場合の拒否メールを追加します。
「Apply to each」が自動追加されなかったことも確認できたと思います。
龍之介

 

step
承認者コメント

承認者1が承認要求に応答(承認、拒否)した時のコメントを式で取得します。
承認した場合は、次の承認要求に追加しますが、拒否した場合は、メール送信の本文に追加します。
ここもfirstの式を使います。承認した時は、データ操作の作成で承認者のコメントを取得しないと、次の「開始して応答を待機」のアクションでエラーになります。

④「はいの場合」の中にデータ操作の「作成」のアクションを追加します。
アクション名は、「承認者3人承認1コメント」に変更します。
⑤入力に下記式を入力します。

 
if(equals(first(body('承認者3人承認1')?['responses'])?['approverResponse'],'承認'),coalesce(first(body('承認者3人承認1')?['responses'])?['comments'],'コメントはありません。'),null)

 

承認のアクションがタイムアウトになると、承認者がコメントをしていないのでnullになります。
龍之介

⑥拒否メールの本文には、下記式を2つ入力します。
承認者は、変数でも取得できますが、式でも追加できます。

 
first(body('承認者3人承認1')?['responses'])?['responder']['displayName']
 
first(body('承認者3人承認1')?['responses'])?['comments']
<p>@{outputs('稟議申請Tableの再取得')?['body/Author/Department']}<br>
@{outputs('稟議申請Tableの再取得')?['body/Author/JobTitle']} @{outputs('稟議申請Tableの再取得')?['body/Author/DisplayName']}さん<br>
<br>
稟議が<font color="blue">拒否</font>されました。<br>
<br>
▼稟議事項<br>
@{outputs('稟議申請Tableの再取得')?['body/ApprovalMatter/Value']}<br>
▼内容<br>
@{uriComponentToString(replace(uriComponent(outputs('稟議申請Tableの再取得')?['body/Contents']), '%0A', '<br>'))}<br>
▼金額<br>
@{formatNumber(outputs('稟議申請Tableの再取得')?['body/Money'], 'C', 'ja-jp')}<br>
▼時期<br>
@{outputs('稟議申請Tableの再取得')?['body/Season']}<br>
▼添付ファイル確認<br>
<a href="@{outputs('稟議申請Tableの再取得')?['body/{Link}']}" target="_blank" rel="noopener noreferrer">
アイテムへのリンク
</a><br>
━━━━━━━━━━━━━━━━━━━<br>
★承認者<br>
@{first(body('承認者3人承認1')?['responses'])?['responder']['displayName']}<br>
★承認者コメント<br>
@{first(body('承認者3人承認1')?['responses'])?['comments']}</p>

 

step
終了

このままでは、拒否メールを送った後に次のアクション(承認要求)にフローが進むので、「終了」のアクションを追加します。

⑦「いいえの場合」の中、拒否メールの下に、コントロールの「終了」を追加します。
⑧状態は、「成功」を選択します。

 

Power AutomateSharePointにHTTP要求を送信します

 

step
並列分岐を追加

並列分岐を追加して、承認ステータスを承認にします。
「項目の更新」のアクションは必須項目の動的なコンテンツも追加する必要があるので、「SharePointにHTTP要求を送信します」のアクションで承認ステータス、承認日時のみ更新します。

①「承認者3人承認1」の下の「+」→「並列分岐の追加」をクリックします。
②「SharePointにHTTP要求を送信します」のアクションを追加します。
③サイトのアドレス、方法に「PATCH]、URI、ヘッダー、ボディを入力します。
アクション名は、「承認者3人承認1自動承認」に変更します。

 
_api/web/lists/getbytitle('稟議申請テスト')/items(@{outputs('稟議申請の取得')?['body/ID']})

 

{
  "content-type": "application/json;odata=verbose",
  "IF-MATCH": "*"
}

 


{
"__metadata": { 
"type": "SP.Data.ApprovalWorkflowTestListItem"
},
"ApprovalDateTime1" : "@{formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 'yyyy/MM/dd HH:mm')}",
"ApprovalStatus1" : "承認"
}

 

step
実行条件の構成

「開始して承認を待機」のアクションがタイムアウトになった時に、自動承認のアクションが実行するように「実行条件の構成」を設定します。

④「承認者3人承認1自動承認」の右側の三点リーダー「・・・」→「実行条件の構成」をクリックします。
⑤「がタイムアウトしました」にチェックし、「完了」をクリックします。

 

step
自動承認メール

タイムアウトになり、自動承認したことを承認者1に伝えます。

⑥「メールの送信(V2)」のアクションを追加します。
アクション名は、「承認者3人承認1自動承認メール」に変更します。
⑦宛先は、変数AuthorizerEmailListの1番目0を追加します。
⑧件名は、『【自動承認】タイトル』と入力します。
⑨本文には、自動承認したと入力します。
</>をクリックしてHTMLにします。
⑩差出人には、「共有メールボックス」を追加します。

<p>@{variables('AuthorizerNameList')[0]}さん<br>
<br>
3日間、承認要求に応答しなかったので<font color="red">自動承認</font>しました。<br>
<br>
▼申請部署<br>
@{outputs('稟議申請Tableの再取得')?['body/Author/Department']}<br>
▼申請者<br>
@{outputs('稟議申請Tableの再取得')?['body/Author/DisplayName']}<br>
▼稟議事項<br>
@{outputs('稟議申請Tableの再取得')?['body/ApprovalMatter/Value']}<br>
▼内容<br>
@{uriComponentToString(replace(uriComponent(outputs('稟議申請Tableの再取得')?['body/Contents']), '%0A', '<br>'))}<br>
▼金額<br>
@{formatNumber(outputs('稟議申請Tableの再取得')?['body/Money'], 'C', 'ja-jp')}<br>
▼時期<br>
@{outputs('稟議申請Tableの再取得')?['body/Season']}<br>
▼添付ファイル確認<br>
<a href="@{outputs('稟議申請Tableの再取得')?['body/{Link}']}" target="_blank" rel="noopener noreferrer">
アイテムへのリンク
</a><br>

 

Power Automate承認アクション(承認者2)

 

step
承認者3人承認1をコピー

次の承認者(承認者2)の「開始して承認を待機」を追加します。承認者1の「承認者3人承認1」をコピーして追加します。

①一番下の「アクションの追加」にコピーしたアクションを追加します。
追加できないときは、「+新しいステップ」(ケース)の外に追加してから、ドラッグアンドドロップで移動します。
画像のように移動してください。
アクション名は、「承認者3人承認2」に変更します。

 

step
担当者、詳細、要求元の編集

コピーした「承認者3人承認1」を承認者2の内容に編集します。

②担当は、変数AuthorizerEmailListの2番目1に変更します。
③要求元は、変数AuthorizerEmailListの1番目0に変更します。

要求者、要求者コメントは、式で追加します。
龍之介

稟議申請がありました。
添付ファイルを確認して、承認要求に応答して下さい。
承認要求に応答しない場合、3日でタイムアウトになります。
次の承認者は、@{variables('AuthorizerNameList')[2]}さんです。

▼申請者
@{outputs('稟議申請Tableの再取得')?['body/Author/Department']}
@{outputs('稟議申請Tableの再取得')?['body/Author/DisplayName']}
▼起案番号
@{outputs('稟議申請Tableの再取得')?['body/DraftingNo']}
▼稟議事項
@{outputs('稟議申請Tableの再取得')?['body/ApprovalMatter/Value']}
▼内容
@{outputs('稟議申請Tableの再取得')?['body/Contents']}
▼金額
@{formatNumber(outputs('稟議申請Tableの再取得')?['body/Money'], 'C', 'ja-jp')}
▼時期
@{outputs('稟議申請Tableの再取得')?['body/Season']}
━━━━━━━━━━━━━━━━━━━
★要求者
@{variables('AuthorizerNameList')[0]}
★要求者コメント
@{coalesce(outputs('承認者3人承認1コメント'),'タイムアウトで自動承認しました。')}

 

タイムアウトの設定は、アクションをコピーすればそのまま3日です。
龍之介

 

step
実行条件の構成

実行条件の構成は、「成功」「スキップ」にします。「条件」「メールの送信」両方設定します。

④「承認者3人承認2」の右側の三点リーダー「・・・」→「実行条件の構成」をクリックします。
⑤「に成功しました」「がスキップされます」にチェックし、「完了」をクリックします。
「条件」「メールの送信」両方設定します。

 

 

ここまできたら後は、「承認者2人承認判定2「承認者3人承認2自動承認」というように、コピーしたアクションを追加します。
アクション名や式の後の数字を変更することを忘れないようにしてください。
龍之介

 

Power Automate承認アクション(承認者3)

 

step
承認者3人承認2をコピー

説明は、あと少しです。
決裁者(最終承認)はタイムアウトにしません。
このフローがいつタイムアウトになるかの日付を追加して、承認要求に応答してもらいましょう。
また、最終承認だと分かるようにすることも忘れないようにしてください。

①一番下の「アクションの追加」にコピーしたアクションを追加します。
②担当は、変数AuthorizerEmailListの3番目2に変更します。
③要求元は、変数AuthorizerEmailListの2番目1に変更します。

要求者、要求者コメントは、式で追加します。
龍之介

稟議申請がありました。
添付ファイルを確認して、承認要求に応答して下さい。
@{formatDateTime(addDays(convertTimeZone(outputs('稟議申請Tableの再取得')?['body/Created'], 'UTC', 'Tokyo Standard Time'),29),'yyyy/MM/dd')}にタイムアウトになります。
あなたが、最終承認者です。

▼申請者
@{outputs('稟議申請Tableの再取得')?['body/Author/Department']}
@{outputs('稟議申請Tableの再取得')?['body/Author/DisplayName']}
▼起案番号
@{outputs('稟議申請Tableの再取得')?['body/DraftingNo']}
▼稟議事項
@{outputs('稟議申請Tableの再取得')?['body/ApprovalMatter/Value']}
▼内容
@{outputs('稟議申請Tableの再取得')?['body/Contents']}
▼金額
@{formatNumber(outputs('稟議申請Tableの再取得')?['body/Money'], 'C', 'ja-jp')}
▼時期
@{outputs('稟議申請Tableの再取得')?['body/Season']}
━━━━━━━━━━━━━━━━━━━
★要求者
@{variables('AuthorizerNameList')[1]}
★要求者コメント
@{coalesce(outputs('承認者3人承認2コメント'), 'タイムアウトで自動承認しました。')}

 

実行条件の構成は、承認アクション(承認者2)と同じです。
そのあとに「承認者3人承認判定2」をコピーして、「承認者3人承認判定3」の条件を追加して、true「承認」false「拒否」にします。
龍之介

 

Power Automate承認メール(承認者3)

 

step
承認メール

これが最後の説明です。
承認者3のコメントは式で取得できるので、「メールの送信」を追加して、申請者に承認メールを送信します。
承認者3人承認コメントのアクションは、不要です。

①「はいの場合」の「承認者3人承認追加3」に「メールの送信(V2)」のアクションを追加します。
アクション名は、「承認者2人申請者に承認メール3」に変更します。
②宛先は、「申請者Email」を追加します。
③件名は、『【最終承認】タイトル』と入力します。
④本文には、最終承認者のコメントを追加します。
</>をクリックしてHTMLにします。
⑤差出人には、「共有メールボックス」を追加します。

<p>@{outputs('稟議申請Tableの再取得')?['body/Author/Department']}<br>
@{outputs('稟議申請Tableの再取得')?['body/Author/JobTitle']} @{outputs('稟議申請Tableの再取得')?['body/Author/DisplayName']}さん<br>
<br>
稟議が<font color="red">承認</font>されました。<br>
<br>
▼決裁番号<br>
@{formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 'yyyyMMdd')}-@{formatNumber(outputs('稟議申請Tableの再取得')?['body/ID'], 'd5', 'ja-jp')}<br>
▼稟議事項<br>
@{outputs('稟議申請Tableの再取得')?['body/ApprovalMatter/Value']}<br>
▼内容<br>
@{uriComponentToString(replace(uriComponent(outputs('稟議申請Tableの再取得')?['body/Contents']), '%0A', '<br>'))}<br>
▼金額<br>
@{formatNumber(outputs('稟議申請Tableの再取得')?['body/Money'], 'C', 'ja-jp')}<br>
▼時期<br>
@{outputs('稟議申請Tableの再取得')?['body/Season']}<br>
▼添付ファイル確認<br>
<a href="@{outputs('稟議申請Tableの再取得')?['body/{Link}']}" target="_blank" rel="noopener noreferrer">
アイテムへのリンク
</a><br>
━━━━━━━━━━━━━━━━━━━<br>
★承認者<br>
@{first(body('承認者3人承認3')?['responses'])?['responder']['displayName']}<br>
★承認者コメント<br>
@{first(body('承認者3人承認3')?['responses'])?['comments']}</p>

 

まとめ

 

今回は、承認アクションをタイムアウトにして、自動承認にする方法を説明しました。

実践で使える稟議申請ワークフローを構築しようとすると、アクションが多くなり大変な作業です。

SharePointポータルサイト活用の「稟議申請ワークフロー」では、この記事のようにアクションにコピペで追加できるように、読者ページを用意しています。

読者以外の方が、この記事を読まれたら、ヘコタレてしまうかもしれませんが1つフローをつくれば、フローはコピーできます。

承認ワークフローシステムを契約しているけど、一部の部署でSharePoint+Power Automateのワークフローを構築したい人が多いようなので、興味ある方は、是非 「SharePointポータルサイト活用」の電子書籍をよろしくお願いします。

自動承認の内容は、YouTubeで動画作成予定にしています。

目次

第1章 意外と知らないSharePointの便利な使い方(初級)
|Outlookは使わない予約カレンダーの作り方
|外部共有のフォルダー、ファイルを決まった期間で削除
第2章 リストを活用して複雑な承認ワークフローを実現(中級)
|稟議申請ワークフローの概要
|稟議申請ワークフローの仕組みについて
|3つのリスト作成手順
|稟議申請フロー作成手順
|稟議再申請、取下フロー作成手順
第3章 SharePointでWebアプリを使おう!(上級)
|SharePoint上でWebアプリを公開する
|在席確認アプリ機能概要
|在席確認アプリ公開手順
おわりに

 

本の説明

会社の社内ポータルサイトを活用したい方は、「稟議申請ワークフロー」「在席確認アプリ」「予約カレンダー」「外部共有サイト」の4つを活用できます。社内ポータルサイトを構築したら、次はあなたが開発者になって、手順を見ながら4つの作成してください。

kindleの読み放題を契約している人は、購入しなくても読み放題プランで読むことができます。
無料体験でも読むことができます。
龍之介

>>「SharePointポータルサイト活用」を読み放題プラン(初回30日無料)で読む

 

稟議申請ワークフローを構築する人は、電子書籍も参考にしてください。
龍之介

-Power Automate, SharePoint

© 2022 越後屋ブログ店