月1回ではなく月2回 Power Automate のフローを動かす方法
この記事の内容
- Power Automate の繰り返しトリガーは「毎月第〇日」のような細かい指定ができないため、別のアプローチが必要です
- 毎日実行するスケジュールを組み、「今日が何日か」を条件判断することで月2回実行を実現できます
- UTC の現在時刻を日本標準時に変換してから日付を取得することが重要なポイントです
dayOfMonth()関数を使うと、タイムスタンプから「日」の部分だけを抽出できます- 条件分岐を組み合わせることで、指定した日だけチームズにメッセージを投稿するフローが完成します
背景:月2回の定期実行は繰り返しトリガーだけでは難しい
Power Automate の Teams アプリ内でフローを作成する際、スケジュールトリガーとして「繰り返し」を選択できます。この繰り返しトリガーでは、実行間隔を「分・時間・日・週・月」などの単位で指定できます。
しかし、「毎月10日と末日」のように月2回の特定日を直接指定することはできません。そのため、別のアプローチを取る必要があります。
解決策の考え方
月2回実行したい場合の方法はいくつかありますが、シンプルな方法として次の2つが考えられます。
方法1:同じフローを2つ作る
- 1つ目のフローを「10日にスタートして、1か月に1回実行」に設定
- 2つ目のフローを「末日にスタートして、1か月に1回実行」に設定
この方法は構成がシンプルで、条件分岐を書く必要がありません。
方法2:毎日実行して条件で振り分ける(本記事で詳しく解説)
- 毎日実行するフローを1つ作成し、「今日が対象の日付かどうか」を条件で判断する
本記事では方法2を詳しく解説します。
フローの作成手順
1. トリガーの設定
Teams アプリ内の Power Automate から新しいフローを「一から作成」します。トリガーには「組み込み」の「繰り返し」を選択します。
- 間隔:1
- 頻度:日
- 開始時刻:任意の日付・時刻(例:午前10時)
- タイムゾーン:(UTC+09:00) 大阪、札幌、東京
タイムゾーンは日本時間に合わせておくと管理しやすくなります。
2. 現在の日本時間を取得する
繰り返しトリガーの直後に、現在時刻を日本標準時に変換するアクションを追加します。
アクション:タイムゾーンの変換
- 基準時刻:
utcNow()(現在のUTC時刻) - 変換元のタイムゾーン:(UTC) 協定世界時
- 変換先のタイムゾーン:(UTC+09:00) 大阪、札幌、東京
Power Automate の utcNow() は UTC で時刻を返すため、そのまま使うと日本時間と最大9時間ずれが生じます。必ずタイムゾーン変換を行ってから日付を取得してください。 変換を省略すると、日付が変わる前後の時間帯で意図しない動作になる可能性があります。
3. 日付の「日」部分を取得する
タイムゾーン変換後の時刻から、「何日か」だけを取り出します。ここでは dayOfMonth() 関数を使います。
アクション:データ操作 > 作成
入力欄に以下の式を入力します。
dayOfMonth() は、タイムスタンプ文字列から「日」の部分(1〜31の整数)を返す関数です。この関数の存在を知っておくと、日付操作が大幅に楽になります。
もしこの関数がなかったとしても、文字列操作で日付部分を切り出すことは可能です。Power Automate では「何でもできる」という前提で考え、やりたいことを実現する手段を探すアプローチが重要です。
4. 動作確認(テスト実行)
ここで一度「手動でテスト」を実行して、日付が正しく取得できているか確認しましょう。
- タイムゾーン変換後の出力に現在の日本時間が表示されていること
dayOfMonth()の出力に今日の日付(数値)が表示されていること
を確認してください。
5. 条件分岐の設定
取得した「日」の値が対象日(例:5日または10日)かどうかを判断する条件を追加します。
アクション:組み込み > コントロール > 条件
条件の設定例(毎月5日と10日に実行したい場合):
- はいの場合:メッセージ投稿などの処理を実行
- いいえの場合:何もしない(アクションを追加しない)
6. チームズへのメッセージ投稿アクションを設定
条件の「はいの場合」に、Teams へのメッセージ投稿アクションを追加します。
アクション:Microsoft Teams > チャットまたはチャンネルでメッセージを投稿する
- 投稿者:フローボット
- 投稿先:チャンネル
- チーム:対象のチームを選択
- チャンネル:対象のチャンネルを選択
- メッセージ:任意のテキスト(例:
[作成の出力] 日になりました。本日の作業をよろしくお願いします。)
7. フローを保存してオンにする
フローに名前を付けて保存します。フローの状態が「オン」になっていれば、スケジュール済みとして毎日自動実行されます。
動作の仕組みまとめ
完成したフローの処理の流れは次のとおりです。
まとめ
Power Automate の繰り返しトリガーは「月に2回の特定日」を直接指定できませんが、毎日実行+条件分岐という構成で実現できます。
本記事の実装で特に重要なポイントは以下の2点です。
タイムゾーンの変換を必ず行う:
utcNow()はUTC時刻を返すため、日本標準時(UTC+9)への変換をフローの最初に行わないと、日付がズレる可能性があります。dayOfMonth()関数の活用:タイムスタンプから「日」の部分だけを取り出せるこの関数を使うことで、条件判断がシンプルに書けます。
条件分岐さえできれば、応用の幅は大きく広がります。ループや外部サービスとの連携も組み合わせることで、Power Automate でできることはほぼ無限大です。「できるはずだ」という前提で考え、実現方法を探すアプローチで取り組んでみてください。