20250816_フローの処理が終了しても値が破棄されない変数をフローだけで実現する

1.1K Views

August 16, 25

スライド概要

https://kimamani.connpass.com/event/365310/

profile-image

Microsoft 365、Power Platrform、PowerShellについて調べたことや検証したこと

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

ダウンロード

関連スライド

各ページのテキスト
1.

【Power Automate】 フローが終了しても値が破棄されない変数を フローだけで実現する 気ままに勉強会 #120 今回のお題:気ままになんでもLT会~第7回~ 2025/8/16 1

2.

自己紹介 • 名前: • 活動場所 わたるふ • ブログ (主な活動場所) ルドルフもわたるふもいろいろあってな https://wataruf.hatenablog.com • こんなひとです • SharePoint Server 2007 からお仕事でMicrosoft 製品に関わる • PowerShell が好き • 公開している登壇資料 https://www.docswell.com/user/wataruf01 • Microsoft Teams が好き • Power Automate が特に好き • マシュマロ (質問を受け付けています) • 活動内容 • 調査・検証したことなどをブログで解説しています • 開発したもの (主にPower Automate のクラウドフロー) をGitHubで公開しています https://marshmallowqa.com/wataruf01?utm_medium=url_text&utm_ source=promotion Microsoft MVP for Business Applications (2023/4~) 2

3.

注意事項 • 解説する内容は私の個人的な見解が含まれています • 内容に誤りがある場合はご指摘をいただけると助かります 3

4.

今回のお話 フローが終了しても値が破棄されない変数を フローだけで実現する 思いついたので フローはGitHubで公開しています。 作ってみました 活用いただければ幸いです。 4

5.

背景 もともと自社はフルリモートOKのルールでしたが、つい最近、「原則週に1回以上出社す ること」というルールになりました。 それを受けて同僚が「出社拠点の机を掃除する日」、いわゆる「クリーンデスクの日」を 設けることを提案しました。 その同僚が、クリーンデスクの日に該当する日を自動で社内Slackのチャネルに通知する仕 組みをPower Automate を使って実現したいと考え、私に相談してきてくれました。 (`・ω・´) 良いお題をありがとう。フローを作りました。 5

6.

フローの目的 フローの目的は「クリーンデスクの日に社内に通知する」です。 「クリーンデスクの日」の条件は下記の通りです。 条件2 条件1 • 日付が5の倍数(5日、10日、15日、20日、25日、30日)である かつ、営業日である(= 土曜・日曜・祝日ではない) (5の倍数であるかどうかに関わらず) その次の営業日 • 例: • 例: • 7月5日(土) • 「5の倍数の日」が営業日でなかった場合は、 → 土曜なので通知なし • 7月10日(水) → 平日かつ5の倍数 → 通知あり • 7月20日(日) → 日曜なので通知なし • 7月20日(日) → 日曜なので通知なし • 7月21日(月) → 祝日(海の日)なので通知なし • 次の営業日である 7月22日(火) に通知 6

7.

フローの使用イメージ 7

8.

例:7月20日(日) 日付が5の倍数だけれど日曜日なので通知をスキップ フローのトリガーは日次の定期実行 8

9.

例:7月21日(月) 祝日(海の日)なので通知なし フローのトリガーは日次の定期実行 9

10.

例:7月22日(火)スキップしてから最初にきた営業日なので通知 フローのトリガーは日次の定期実行 10

11.

使用するフロー 今回は2つのフローを使用します。 11

12.

使用するフロー ① メインのフロー ② サブのフロー 12

13.

使用するフロー ① メインのフロー ② サブのフロー ポイント サブのフローは 使用するけれども、実行しません。 13

14.

処理内容 14

15.

処理内容 メインのフロー の 処理内容を解説します 15

16.

処理内容 16

17.

処理内容 17

18.

処理内容 18

19.

処理内容 19

20.

処理内容 20

21.

処理内容 21

22.

「直近の5の倍数の日が非営業日だったフラグ」とは • このフラグは名前の通り「直近の5の倍数の日が非営業日だったかどうか」を 示すものです。 • このフラグが true の場合は、直近の5の倍数の日が非営業日であり、その日の通知がス キップされたことを意味します。 • つまり、このフラグが true のときは、現在の日付が5の倍数かどうかに関わらず、営業 日であれば通知対象となります • このフラグは、フローの処理が完了しても 値が破棄されない必要があります。 22

23.

【今回の主旨】 フローが終了しても値が破棄されない変数をフローだけで実現する 23

24.

一般的な「フローが終了しても値を破棄させない」方法 • フローの処理が終了しても値を破棄させたくない変数は ソリューション外部で管理するのが一般的と思われます。 • 例:SharePoint サイトに専用リストを作成し、1件だけアイテムを登録しておき、 フローからそのアイテムを固定的に参照する • しかし、そのような方法には次のような課題が発生します。 1. フローに必要な構成要素をソリューション内で完結できない 2. フラグ用のSharePoint リストを事前に作成する必要がある 3. リスト作成や設定手順のドキュメント化・共有が必要になる 24

25.

【今回の主旨】 フローが終了しても値が破棄されない変数をフローだけで実現する この課題を解消するために思いついたのが 「フロー定義(Flow Definition)の取得・更新機能を応用して 変数の値を取得・更新する」 という方法です。 • フロー定義とは、Power Automate のフロー全体の構造や設定内容を JSON 形式で保持している情 報です。このフロー定義には「変数を初期化する」アクションとその初期値が含まれています。 • 今回の手法は「フロー定義の取得・更新」を使って下記のことを実現ています • 「変数の初期化」アクションの初期値を 「変数に値が格納されている状態」 として扱う • フロー定義の更新によって初期値を変更することを 「変数への値の代入」 として扱う 25

26.

「フロー定義の取得・更新」を応用した「変数の値の取得・更新」 「変数の値を取得」 「変数に値を代入」 26

27.

注意点 この方法はフロー定義の取得・更新アクションが 本来想定して いる使い方ではないと思われます。今後の仕様変更によって、こ の手法が使えなくなる可能性があります。 そのため、この方法は個人利用レベルなどの限られた用途にとど めることを推奨します。 27

28.

解説に使用したフローはGitHubで公開しています 解説内容の理解にご活用ください。このフローは下記ブログ記事で使用しています。 • 【概要編】日付が5の倍数の営業日に通知する。「5の倍数の日」が営業日でなかった場合、その次の営業日に通知する。 https://wataruf.hatenablog.com/entry/2025/08/03/000000 • 【解説編その1】日付が5の倍数の営業日に通知する。「5の倍数の日」が営業日でなかった場合、その次の営業日に通知する。 https://wataruf.hatenablog.com/entry/2025/08/09/000000 • 【解説編その2】日付が5の倍数の営業日に通知する。「5の倍数の日」が営業日でなかった場合、その次の営業日に通知する。 https://wataruf.hatenablog.com/entry/2025/08/13/000000 • 【解説編その3・最終回】日付が5の倍数の営業日に通知する。「5の倍数の日」が営業日でなかった場合、その次の営業日に通知する。 https://wataruf.hatenablog.com/entry/2025/08/14/000000 28

29.

Power AutomateのフローやTIPSをブログで公開しています • 興味を持っていただけたかたは下記のURLからいらしてください https://wataruf.hatenablog.com 29

30.

ましゅまろで質問をうけつけています • 匿名でのご質問も可です。 • X(旧Twitter)にマシュマロのリンクを公開しています。 • 回答内容はブログで投稿します。 30

31.

最後に フローが終了しても値が破棄されない変数をフローだけで 実現する方法を解説しました。 これがどなたかのお役に立てれば幸いです。 フィードバック・ご意見をいただけると とても嬉しいです。 31