【Power Automateではじめる業務の完全自動化】実務直結のノウハウが満載! 本連載では、企業へのMicrosoft 365の導入や活用支援を手がける著者・太田浩史氏による、Power Automateを使った業務自動化のノウハウを提供します。

第4章|身近な業務に役立つフローで効率化
LESSON 23

関数やアクションで日時を計算・変換する

今日から30日後の日付の値を計算したいなどの場合、日付処理の関数を利用できます。ただし、計算結果が見慣れない書式になっており、はじめて利用する人には戸惑いやすい関数です。日付を関数で扱うときの基礎から順に押さえていきましょう。

日時を扱う際は書式に注意する

業務で利用するフローでは、何月何日より前で条件分岐を行ったり、作成するファイル名に実行日時を利用したりするなど、日時の値を扱う場面も多くあります。フローでの処理では日時の値は、ISO8601という日時書式の国際規格で扱われます。そのためまずは、この書式について知っておきましょう。

例えばISO8601の日時表記では、日本時間の2023年6月3日19時15分30秒を「2023-06-03T19:15:30+09:00」のように表します。複雑に見えますが、次のようなルールになっています。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

特に日本の場合は世界協定時から+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

フローで日付と時刻の値をカスタマイズまたは書式設定する
カスタム日時形式文字列

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

関数で期限を自動で算出する

日時処理の関数を実際に使ってみましょう。ここではタスクを管理しているSharePointリストに、新しくタスクを登録し、自動的に14日後を計算して期限を入力してみます。addDays関数を利用し、SharePointリストのアイテムの[登録日時]に14日を足した値を計算しています。この式を[項目の更新]アクションの、[期限]列に対して指定します。日付の値をSharePointリストに書き込むときには、ISO8601の書式をそのまま利用できます。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

フローを保存してテスト実行する

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

取得した日時を日本時間に変換するには

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つのアクションが用意されており、[タイムゾーンの変換]や[現在の時刻]の取得などが関数を使わずとも行えます。[これらを利用することで、関数を使うよりもより簡単に日時処理を含むフローを作成できます。関数が難しいと感じる場合には、これらのアクションも確認してみてください。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

[日時]のアクションを使ってファイル名に日時を含める

日時処理のアクションを使ってみましょう。実務でよくあるのは、ファイルを作成するときにファイル名に作成日時を含める場面です。次のフローはOutlookに届いたメールに添付ファイルがある場合、ファイル名の先頭に現在日時を付けて、OneDrive for Businessの[添付ファイル]フォルダーに保存します。

フローの実行中には[現在の時刻]アクションで現在時刻を取得できますが、この時間のタイムゾーンはUTCになっています。そのままファイル名に利用すると、日本時間とは9時間ずれているため不都合があります。そこで[タイムゾーンの変換]アクションを利用し、タイムゾーンを修正します。さらに合わせて、[書式設定文字列]の設定では、[カスタム値]として前述の「さらに上達!」で紹介した「書式指定文字列」を利用できます。これでタイムゾーンの修正と日時表記の変換が同時にでき、ファイル名での利用に適した値になります。

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

の[タイムゾーンの変換]アクション

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

動的なコンテンツから[現在の時刻]を選択
[カスタム値の入力]をクリックして、[書式設定文字列]欄に「yyyy/MM/dd_hh:mm:ss」と入力
[(UTC)協定世界時]を選択
[(UTC+09:00)大阪、札幌、東京]を選択

の[ファイルの作成]アクション

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

添付ファイルの保存先を選択。ここではあらかじめ用意した[添付ファイル]を指定
動的なコンテンツを利用し「[変換後の時間]_[添付ファイルの名前]」と入力
動的なコンテンツから[添付ファイルコンテンツ]を選択

フローを保存してテスト実行する

Excelファイルの内容をSharePointリストに転記|Power Automateではじめる業務の完全自動化

関連記事