【PowerAutomate】第何何曜日(第2火曜日など)の日付を取得

スポンサーリンク




作業を自動化する
  • プログラミングは分からないけど自動化したい
  • PowerAutomateの使い方がイマイチ分からない
  • 第2火曜日や、第1水曜日などの条件で日付を求めたい

無料ツールでさらにノンプログラミングで自動化ができるならぜひやってみたい!

この記事では、そんな方に向けて第1~5○曜日の日付を求める方法を3ステップで説明します。

  • 第○何曜日を求めるフローの動き
  • 第○何曜日を求める仕組み
  • フローを作る
みずしぶき
みずしぶき

この記事を読めば、第○水曜日などを求めるのも簡単にできるようになります。

まだPowerAutomateを使った事が無いという方はこちらの記事を参考にしてください。

PowerAutomateはブラウザで操作するのでインストール無しで利用できます。Windows10ではないMacユーザも自由に使えます。

私がPowerAutomateの勉強で実際に読んだ本を紹介します。

スポンサーリンク

第○何曜日を求める(例:第2火曜日)

フローの作成で設定する条件は2つです。

  • 第何週目か指定する(1~5の数字)
  • 目的の曜日を指定する(0~6の数字)
      0:日 1:月 2:火 3:水 4:木 5:金 6:土

今回は第2火曜日を求めるので2と2を設定しておきます。

  • 第何週目:2
  • 目的の曜日:2
      0:日 1:月 2:火 3:水 4:木 5:金 6:土

※設定方法は後で説明します。

実際に動かしてみます。2022年7月の第2火曜日は7月12日です。

2022年8月
1234567
891011121314
15161718192021
22232425262728
293031  

フロー全体。

フローの内容は後で説明するので、この数で動くんだ。くらいで見ておいてください。

(1)フロー実行は7月11日

フローを試しに動かした日付です。

(2)第2週を指定

フローの設定で2を指定したので、2になっています。
※フローの設定は後で説明します。

(3)火曜日を指定 0:日 1:月 2:火 3:水 4:木 5:金 6:土

フローの設定で2を指定したので、2になっています。
※フローの設定は後で説明します。

(4)結果7月12日「第2火曜日」

第2火曜日の2022/7/12が表示されました。

結果を求める為に使った条件は3つです。

  • フローの実行日(2022/7/11)
  • 第○週の指定(2)
  • 曜日の指定(2)

この3つから第2火曜日を求めることができました。

動きは分かりましたが、どうやっているのか。その仕組みを次の項目で説明します。

みずしぶき
みずしぶき

仕組みには重要なポイントが沢山あるのでしっかり見てください。

第○何曜日を求める仕組み

最初に第1何曜日かを求めます。第1の日付がわかると第2は+7するだけなので計算は単純です。
問題は第1です。

第1曜日を求めるためには曜日を計算したいので、ゼロを日曜にして曜日を0~6の数字で表します。

0:日 1:月 2:火 3:水 4:木 5:金 6:土

求めたい曜日から月初の曜日を引くとその差が月初からの日数になります。
月初が金曜(5)で求めたい曜日が土曜(6)の場合は6-5=1です。
文字だけだと分からないのでこちらを見てください。

7/1(金)→5 ★月初 ・・5-5=0 月初に+0した日付になる
7/2(土)→6 6-5=1 月初に+1した日付になる
7/3(日)→0 0-5=ー5 マイナスなので+7して2 月初に+2した日付になる
7/4(月)→1 1-5=ー4 マイナスなので+7して3 月初に+3した日付になる
7/5(火)→2 2-5=ー3 マイナスなので+7して4 月初に+4した日付になる
7/6(水)→3 3-5=ー2 マイナスなので+7して5 月初に+5した日付になる
7/7(木)→4 4-5=ー1 マイナスなので+7して6 月初に+6した日付になる

繰り返しになりますがもう一度。
7/2(土)は土曜日なので6
月初は金曜日なので5
6-5をすると1です。金曜の次は土曜ですから+1ですよね。
月初が7/1(金)なら1を足すと7/2(土)になります。

ちなみに引き算の結果がマイナスになると月初から遡って前月になってしまうので、+7します。

みずしぶき
みずしぶき

ここの考え方が重要なので、理解できるまで繰り返し読んでください。

第2は7を足します。
第1土曜日が7/2だと分かれば第2土曜日は+7でもとめられます。

第3は14を足す。
第4は21を足す。
第5は28を足す。という感じになります。

次は月初や曜日を数字にする方法について説明します。
こちらにあるPowerAutomateの関数を使います。

  • 月初を求める・・startOfMonth
  • 曜日を求める・・dayOfweek
  • 日付を足す・・addDays
  • 足し算する・・add
  • 引き算する・・sub
  • 掛け算する・・mul

関数は値を指定すると関数に応じた処理をして別の値を返すものです。

使い方は動的なコンテンツの右にある「式」へ関数とその値を入力するだけです。
例で月初を求めるstartOfMonthを使ってみます。値には「’2022-07-11T00:00:00’」を入れてみます。

startOfMonth(‘2022-07-11T00:00:00’)

フローをテストで動かすとこの結果になります。

2022-07-01T00:00:00.0000000

関数は組み合わせる事もできます。
先ほどの関数をさらにdayOfweekで囲みます。

dayOfweek(startOfMonth(‘2022-07-11T00:00:00’))

結果は5です。

5

dayOfweekは曜日を数字にする関数なので2022/7/1の金曜日を5にしてくれました。

今回はこれらの関数を組み合わせてフローを作っていきます。

スポンサーリンク

フローを作成

今回作るフローです。トリガーを除くと5つのアクションがあります。
条件の中に「はいの場合」と「いいえの場合」のアクションが2つあるので計7アクションです。

今回使うアクションは4種類です。

  • アクション:変数を初期化する(条件:第○、条件:○曜、第1加算日数)
  • アクション:条件
  • アクション:変数の設定 ※条件の中にあります。
  • アクション:データ操作(作成)

使い方は作りながら見ていきましょう。それではフローを作っていきます。

まだ画面を開いていない方はMicrosoftの公式サイトからPowerAutomateを開いてください。

画面左にある作成から「インスタントクラウドフロー」を選択。
次の画面で「手動でフローをトリガーします」を選び作成します。

「変数を初期化する」を選択します。
3つ同時に設定するので後2回繰り返してください。

作成した「変数を初期化する」のアクション3つにそれぞれ設定を入れます。
アクション名は右側の「…」から名前の変更を選ぶと設定できます。

1つ目2つ目3つ目
アクション名条件:第○条件:○曜第1加算日数
名前第○○曜第1加算日数
種類整数整数整数
220

1つ目と2つ目の値は好きな数字にして下さい。
0:日 1:月 2:火 3:水 4:木 5:金 6:土
この例だと第2火曜日です。

ステップを追加して「コントロール」の「条件」を選びます。

条件を設定します。

左:動的なコンテンツにある「○曜」
中:次の値以上
右:式へ dayOfweek(startOfMonth(triggerBody()[‘key-button-date’]))

曜日の引き算を行う前にマイナスかそうで無いかここでチェックします。
マイナスにならない場合は「はい」マイナスになる場合は「いいえ」に進みます。

式の説明

dayOfweek(startOfMonth(triggerBody()[‘key-button-date’]))

  • triggerBody()[‘key-button-date’] フローの実行日付を返します。
  • startOfMonth ()の中にある日付の月初を返します。
  • dayOfweek ()の中にある日付の曜日を数字で返します。

フローの実行日が2022年7月11日であれば月初の曜日を数字で表します。
月初は2022年7月1日(金)なので5になります。
0:日 1:月 2:火 3:水 4:木 5:金 6:土

「はいの場合」でアクションの追加を押して「変数の設定」をクリック。

2か所設定します。

名前:第1加算日数
値:式へ sub(variables(‘○曜’),dayOfweek(startOfMonth(triggerBody()[‘key-button-date’])))

マイナスにならない場合なので+7はしません。普通に引き算をします。

式の説明

sub(variables(‘○曜’),dayOfweek(startOfMonth(triggerBody()[‘key-button-date’])))

  • triggerBody()[‘key-button-date’] フローの実行日付を返します。 上の式だと2022-07-11
  • startOfMonth ()の中にある日付の月初を返します。 上の式だと2022-07-01
  • dayOfweek ()の中にある日付の曜日を数字で返します。上の式だと5
  • variables ()の中にある変数名の値を返します。 上の式だと2
  • sub ()の中の数字で引き算した答えを返します。例:sub(2,1)だと2-1で1

「いいえの場合」もアクションの追加を押して「変数の設定」をクリック。
2か所設定します。

名前:第1加算日数
値:式へ sub(add(variables(‘○曜’),7),dayOfweek(startOfMonth(triggerBody()[‘key-button-date’])))

マイナスになるので+7します。

式の説明

sub(add(variables(‘○曜’),7),dayOfweek(startOfMonth(triggerBody()[‘key-button-date’])))

  • triggerBody()[‘key-button-date’] フローの実行日付を返します。 上の式だと2022-07-11
  • startOfMonth ()の中にある日付の月初を返します。 上の式だと2022-07-01
  • dayOfweek ()の中にある日付の曜日を数字で返します。上の式だと5
  • variables ()の中にある変数名の値を返します。 上の式だと2
  • add ()の中の数字で足し算した答えを返します。例:add(2,1)だと2+1で3
  • sub ()の中の数字で引き算した答えを返します。例:sub(2,1)だと2-1で1

この時点で第1何曜日は求められています。

次のアクションで第2以降であれば+7、+14などの足し算を行います。

「はいの場合」と「いいえの場合」の下にある新しいステップで「データ操作」を選択。
2つの分岐がここに戻ってくるフローになります。

式を設定 addDays(startOfMonth(triggerBody()[‘key-button-date’]),add(variables(‘第1加算日数’),mul(sub(variables(‘○曜’),1),7)))

第2の場合は2−1*7をして+7になるようにしています。
第3の場合は3ー1*7で+14になります。

式の説明

addDays(startOfMonth(triggerBody()[‘key-button-date’]),add(variables(‘第1加算日数’),mul(sub(variables(‘○曜’),1),7)))

  • triggerBody()[‘key-button-date’] フローの実行日付を返します。 上の式だと2022-07-11
  • startOfMonth ()の中にある日付の月初を返します。 上の式だと2022-07-01
  • dayOfweek ()の中にある日付の曜日を数字で返します。上の式だと5
  • variables ()の中にある変数名の値を返します。 上の式だと2
  • add ()の中の数字で足し算した答えを返します。例:add(2,1)だと2+1で3
  • sub ()の中の数字で引き算した答えを返します。例:sub(2,1)だと2-1で1
  • mul ()の中の数字で掛け算した答えを返します。例:mul(2,1)だと2*1で2
  • addDays ()の中にある日付に日数を足します。 例:addDays(2022-07-01,11)だと2022-07-12

このアクションで第1〜5何曜日を求めることができます。

第2火曜日を指定して2022年7月に実行した結果

まとめ

第1~5○曜日の日付を求める方法を3ステップで説明しました。

  • 第○何曜日を求めるフローの動き
  • 第○何曜日を求める仕組み
  • フローを作る

第○何曜日を求めるならまず第1を求める所が肝心だとわかったと思います。第○何曜日に会議予定を入れるとか作業するとか何だかんだ使うんですよね。この記事のフローは日付を求める部分だけなので、必要に応じて「フローを作る」部分をあなたの作っているフローに当てはめて使ってください。

PowerAutomateの記事まとめ
まだ試してないアクションがあれば見ておきましょう。
初心者向け
【初心者向け】PowerAutomateの使い方。無料で誰でも使えます。
基本的なアクション
【PowerAutomate】メールの添付ファイルをOneDriveへ保存する。
【PowerAutomate】Excelのデータをメールで送信する。
【PowerAutomate】メールを受信したらExcelにデータを入力する。
アクションの応用
【PowerAutomate】第1~5○曜日の日付を求める。
【PowerAutomate】メール本文から名前を抽出する。文字列抽出のキホン。
【PowerAutomate】ソートするフローを作る。配列の並べ替え。
【PowerAutomate】SharePointのリストから列と行をフィルターして表にする。
【PowerAutomate】ExcelからSharePointのリストに一括転記する
【PowerAutomate】SharePointのテキストファイルに改行を付けてメール送信
関数・アクション
【PowerAutomate】日付の関数まとめ。月末月初やExcelシリアル値変換など。
【PowerAutomate】Apply to eachの使い方。勝手に出てくる原因や遅い時の高速化など!

今の勉強法に満足していますか?
やりたい事はネットで調べてなんとか対処しているという方が多いと思います。

私も元々はネットから情報を得ていましたが、知識が少な調べる事ばかりで作業が進まなく悩んでいました。一度専門書を買ってみると勉強に集中できネットより遥かに理解が早かったと感じました。

とはいっても何冊も本を買うとお金も場所も取ります。そこでAmazonが提供するKindle Unlimitedという読み放題のサービス。PCやスマホどちらでも使え、月額980円で毎月1~2冊読めば元がとれたので本代の節約になりました。

>>Kindle Unlimitedへ登録する

確かにネットの情報量は多いのでほしい情報は見つかります。でも、ネットで自分の求めている情報を探すのは時間がかかります。気になる事を都度調べるのは効率悪くないですか?

ではどうしたらいいのでしょうか。

それは基礎知識を学ぶ事です。
専門書は初心者向けから上級者向けまでレベル別で出版されているので、求めている内容がそこにありました。

Kindle unlimitedはラインナップが勝手に変わるという予測できない点はありますが、読みたくなった今すぐに読める点が私にはドハマりでした。

初回30日無料なので今すぐに読みたい本がある方はお試しでも利用できます。Kindle Unlimitedは200万冊以上の本が読めるそうです!

ネットの検索時間から解放され、本来の目的に集中しましょう。

\30日間無料/

タイトルとURLをコピーしました