【Power Automateではじめる業務の完全自動化】実務直結のノウハウが満載! 本連載では、企業へのMicrosoft 365の導入や活用支援を手がける著者・太田浩史氏による、Power Automateを使った業務自動化のノウハウを提供します。
関数やアクションで日時を計算・変換する
今日から30日後の日付の値を計算したいなどの場合、日付処理の関数を利用できます。ただし、計算結果が見慣れない書式になっており、はじめて利用する人には戸惑いやすい関数です。日付を関数で扱うときの基礎から順に押さえていきましょう。
日時を扱う際は書式に注意する
業務で利用するフローでは、何月何日より前で条件分岐を行ったり、作成するファイル名に実行日時を利用したりするなど、日時の値を扱う場面も多くあります。フローでの処理では日時の値は、ISO8601という日時書式の国際規格で扱われます。そのためまずは、この書式について知っておきましょう。
例えばISO8601の日時表記では、日本時間の2023年6月3日19時15分30秒を「2023-06-03T19:15:30+09:00」のように表します。複雑に見えますが、次のようなルールになっています。
特に日本の場合は世界協定時から+9時間の時差があるため、毎回「+09:00」と記載する必要があります。面倒に感じますが、ここの記載を忘れて間違ったタイムゾーンの値で処理を行ってしまうことは、フロー作成ではよくあるミスの1つです。日時の計算を行うときには、必ず注意するようにしましょう。
日時処理と書式変更の関数を確認しよう
それでは日時の計算を行う関数を見てみましょう。よく利用されるのは、実行された現在時刻を取得したり、指定した日時や現在の日時から何日前、何日後などの値を計算したりするものです。
日時処理の関数例
関数名 | 説明 | 利用例 | 得られる結果 |
---|---|---|---|
utcNow | 関数が実行されたUTC時刻を取得する | utcNow() | 2023-06-03T10:15: 30.5603324Z |
addDays | 第1引数に第2引数の日数を加える | addDays('2023-06-03T19: 15:30+09:00', 5) | 2023-06-08T10:15: 30.0000000+00:00 |
getFutureTime | 実行時の日時に指定した期間を加える | getFutureTime(5, 'Day') | 2023-06-08T10:15: 30.0741818Z |
getPastTime | 実行時の日時に指定した期間を引く | getPastTime(5, 'Day') | 2023-05-29T10:15: 30.2562439Z |
また、日時の書式を設定する方法も覚えておきましょう。例えば、日付をメールに記載したりファイル名にしたりするときなどには、ISO8601の日時書式ではなく「2023年6月3日」などの見慣れた表記に変更できます。日時の書式を変更するには、formatDateTime関数を利用するほか、これまで紹介した日時を計算する関数の引数に書式指定文字列を追加することでも行えます。
書式変更の関数例
関数名 | 説明 | 利用例 | 得られる結果 |
---|---|---|---|
formatDateTime | 第1引数の日時を第2引数の書式指定文字列に従って変更する 第3引数には、言語のロケールを指定 | formatDateTime('2023-06-03T19:15:30+09:00', 'yyyy年M月d日(ddd)', 'ja-jp') | 2023年6月3日(土) |
addDays | 第1引数に第2引数の日数を加える 第3引数の書式指定文字列に従って書式を変更する | addDays('2023-06-03T19:15:30+09:00', 5, 'yyyy年M月d日') | 2023年6月8日 |
さらに上達!書式指定文字列で表示したい表記にする
書式指定文字列は、よく利用されるパターンを知っておくと便利です。すべての書式指定文字列を知りたい場合は、Microsoftの公式サイトで確認できます。
よく使われる書式指定文字列
書式指定文字列 | 説明 | 結果例 |
---|---|---|
yyyy | 4桁の西暦 | 2023 |
MM | 0埋めした月 | 06 |
M | 月 | 6 |
dd | 0埋めした日 | 03 |
ddd | 曜日(表記は言語ロケールに従う) | 土 |
dddd | 完全な曜日(表記は言語ロケールに従う) | 土曜日 |
HH | 0埋めした時間(24時間形式) | 19 |
hh | 0埋めした時間(12時間形式) | 07 |
mm | 0埋めした分 | 15 |
ss | 0埋めした秒 | 30 |
Power Automate - Microsoft Learn
関数で期限を自動で算出する
日時処理の関数を実際に使ってみましょう。ここではタスクを管理しているSharePointリストに、新しくタスクを登録し、自動的に14日後を計算して期限を入力してみます。addDays関数を利用し、SharePointリストのアイテムの[登録日時]に14日を足した値を計算しています。この式を[項目の更新]アクションの、[期限]列に対して指定します。日付の値をSharePointリストに書き込むときには、ISO8601の書式をそのまま利用できます。
フローを保存してテスト実行する
取得した日時を日本時間に変換するには
SharePointに保存されている[日付や時刻]列の値は、内部的にはUTCのタイムゾーンで保存されています。そのため、トリガーやアクションで取得できる値もUTCとなり、サイトのタイムゾーンに合わせて表示されている画面上の値とは異なります。そうした日時のタイムゾーンを日本時間に変換するには、convertFromUtc関数またはconvertTimeZone関数が利用できます。引数で指定するタイムゾーンの名前は、日本の場合は「Tokyo Standard Time」を指定します。そのほかのタイムゾーンはMicrosoftの公式サイトで一覧を確認できます。
タイムゾーン変換の関数例
関数名 | 説明 | 利用例 | 得られる結果 |
---|---|---|---|
convert FromUtc | 第1引数の日時(UTC)を第2引数のタイムゾーンに変換する 第3引数の書式指定文字列に従って書式を変更する | convertFromUtc('2023-06-03T10:15:30Z','Tokyo Standard Time','yyyy/MM/dd HH: mm:ss') | 2023/06/03 19:15:30 |
convert TimeZone | 第1引数の日時を第2引数のタイムゾーンから第3引数のタイムゾーンに変換する 第4引数の書式指定文字列に従って書式を変更する | convertTimeZone('2023-06-03T10:15:30Z','UTC','Tokyo Standard Time','yyyy/MM/dd HH:mm:ss') | 2023/06/03 19:15:30 |
Default Time Zones | Microsoft Learn
アクションでも簡単に日時処理を作成できる
日時処理のいくつかは、用意されたアクションでも行うことができます。日時]コネクタでは6つのアクションが用意されており、[タイムゾーンの変換]や[現在の時刻]の取得などが関数を使わずとも行えます。[これらを利用することで、関数を使うよりもより簡単に日時処理を含むフローを作成できます。関数が難しいと感じる場合には、これらのアクションも確認してみてください。
[日時]のアクションを使ってファイル名に日時を含める
日時処理のアクションを使ってみましょう。実務でよくあるのは、ファイルを作成するときにファイル名に作成日時を含める場面です。次のフローはOutlookに届いたメールに添付ファイルがある場合、ファイル名の先頭に現在日時を付けて、OneDrive for Businessの[添付ファイル]フォルダーに保存します。
フローの実行中には[現在の時刻]アクションで現在時刻を取得できますが、この時間のタイムゾーンはUTCになっています。そのままファイル名に利用すると、日本時間とは9時間ずれているため不都合があります。そこで[タイムゾーンの変換]アクションを利用し、タイムゾーンを修正します。さらに合わせて、[書式設定文字列]の設定では、[カスタム値]として前述の「さらに上達!」で紹介した「書式指定文字列」を利用できます。これでタイムゾーンの修正と日時表記の変換が同時にでき、ファイル名での利用に適した値になります。
❶の[タイムゾーンの変換]アクション
❶ 動的なコンテンツから[現在の時刻]を選択
❷ [カスタム値の入力]をクリックして、[書式設定文字列]欄に「yyyy/MM/dd_hh:mm:ss」と入力
❸ [(UTC)協定世界時]を選択
❹[(UTC+09:00)大阪、札幌、東京]を選択
❷の[ファイルの作成]アクション
❶ 添付ファイルの保存先を選択。ここではあらかじめ用意した[添付ファイル]を指定
❷ 動的なコンテンツを利用し「[変換後の時間]_[添付ファイルの名前]」と入力
❸ 動的なコンテンツから[添付ファイルコンテンツ]を選択
フローを保存してテスト実行する
関連記事
本連載は、インプレスの書籍『Power Automateではじめる業務の完全自動化(できるエキスパート)』の内容に基づいています。紹介している情報は、書籍発行時点(2023年9月)のものです。
Source: できるネット
【Power Automate】「今日から30日後」などを自動で算出! 関数やアクションで日時を計算・変換する方法