20240928気ままに勉強会(月末営業日)

3.1K Views

September 28, 24

スライド概要

profile-image

2022年3月頃~ PowerApps、PowerAutomate 等を中心に勉強中。2024年9月よりPower Apps開発・保守・支援をする会社に転職。趣味でアマチュアオーケストラに所属していたが、勉強に集中するためお休み中。

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

Power Automateで 月の最終営業日にする 仕事を自動化したい 2024年9月28日(土)気ままに勉強会 「気ままになんでもLT会~第5回~」

2.

自己紹介 • ハンドルネーム:yukio • X(旧Twitter):@yukio_365 • ブログ:https://yukio-ms365.hatenablog.com/ ・山口県出身・在住、1990年生まれ ・県内の非IT企業勤務中の2022年3月頃にPower Platformに出会い、夢中で勉強した結果、 社内で幾つものアプリ/フローを運用する市民開発者に →2024年9月~Power Platform関連のお仕事にフルリモ転職 ・趣味はコントラバス演奏(オーケストラ、吹奏楽団)今はお休み中だがいつか復帰したい。 【チョットデキル】 Power Appsキャンバスアプリ Power Automate(クラウドフロー) Power Automate for desktop 【勉強中】 Power Appsモデル駆動型アプリ Dataverse Power BI

3.

今回のお話、ブログにまとめております https://yukioms365.hatenablog.com/entry/2024/05/06/115149

4.

前職時代のお話 • 山口県に本社があって、東京に営業所がある会社で市民開発者をしていました。 • 東京に出張した際、東京営業所の社員から「月の最終営業日に特定のメールを 送る仕事があるが、それを忘れがち」という話を聞きました。 • 山口本社の人向けのアプリばかり作っていたのに、本社の人はPower Platform になに一つ興味を示さない中、東京の人が一番最初に興味を示してくれて嬉し くなりました。 • ちょうど自分も月末営業日にしたい仕事があったので、検証作業をした結果、 フローを完成させることができました。 • 今回はそのフローを紹介します。

5.

月の最終日を算出するのは簡単 例 9月28日 ↓ (1か月足す) ↓ 10月28日 ↓ (日数(28日)を引く) ↓ 9月30日(最終日)

6.

じゃあ 月の最終営業日を出そうと思ったら どうなる? ※営業日の定義:「土日」「祝日」「その他休日」のいずれでもない日

7.

結構大変でした…

8.

では1個ずつ見ていきます (お題:月末営業日にメールを1通送信する)

9.

(1)トリガー → タイムゾーン変換 (SNSでみた情報) トリガーを平日だけにすると後のアクションが簡略化できそう

10.

(2)変数の初期化 なぜ1にするのか?は後ほど解説

11.

(3)一旦「月の最終日」を求める • 土日祝はこの時点では考慮しない

12.

(4)さっき求めた月の最終日情報を変数に格納 formatDateTime( , 'yyyy/MM/dd' ) dayOfWeek( )

13.

(5)祝日判定(初回) Outlookの「日本の祝日」カレンダーを使う その日が祝日であれば何らかの配列 (JSON)、祝日じゃなかったら空の配列が 取得できる JSONを解析 配列を変数に入れる

14.

参考:JSON解析 これだけのフロー作って走らせ て、祝日のJSONをコピー ここにJSONを貼り付ける

15.

(6)Do Until ここには「Do Untilを抜ける条件」を 入れる。 このDo Untilは必ず1回以上通ってほ しいので、変数「Flag」は初期化の 時点で1にしておいた

16.

(6-1)土日かどうかの判定 createArray(0,6)

17.

createArrayについては • 以前、私のSNS投稿に対して、Hiroさんがブログにまとめて下さいました。 • https://mofumofupower.hatenablog.com/entry/2022/08/02/155107

18.

(6-2)祝日かどうかの判定 empty( )

19.

(6-3)祝日ではないが一般的な休日の判定 ※ブログ未掲載。追記予定 createArray('12/29' , '12/30') ※他の日付入れてもOK formatDateTime( ,'MM/dd')

20.

(7-4)Flagの値に応じて処理を分ける 「土日」「祝日」「一般的な休日」のどれか1つでも当てはまると、 変数「Flag」は1以上の値になるので、1日前で同じ判定を繰り返す。 0であればその日が最終営業日となるので、Do Untilを抜ける

21.

(7-4)最終営業日でなかった場合 1日減算 1日前に対して(4)(5)と同じこと をして、次のDo Untilの準備

22.

(8)今日は最終営業日か? formatDateTime( ,'yyyy/MM/dd') formatDateTime( 最終営業日が 入ってる ,'yyyy/MM/dd')

23.

(8-1)最終営業日だったらメールを送る

24.

今後の課題と、試してみたいこと • 「毎日」にしていたトリガーを「平日だけ」にしてもっと簡略化する • 「祝日判定はGoogleカレンダーの方が安定する」という話をどこかで見たので、 GoogleカレンダーVer.も作ってみたい • 「最終営業日のn営業日前」みたいなことも実装できないか試してみる

25.

ご清聴ありがとうございました