17
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Power Automate Desktopの変数(3)「Datetime型」

Last updated at Posted at 2021-02-17

概要

Power Automate Desktop(以下PAD) の変数についての記事3回目「Datetime型」です。PADのベース言語Robinのドキュメントを参考に試したものをまとめました。これまで「変数を設定する」アクション中心でしたがDatetime型に関しては日時に関するアクションを使用しています。後半は月末の求め方などのサンプルです。コードはPADにコピペで試せます。

目次

  1. 概要、数値型
  2. テキスト型
  3. Datetime型<今回の記事>
  4. ブール型
  5. リスト型
  6. データテーブル型
  7. カスタムオブジェクト型

注意

  • すでに使いこなしているかた向けの記事ではありません。
  • RobinはPADのベースとなっていますが挙動が異なる部分があります。
  • この記事の内容はすべて試していますが公式の見解とは異なる可能性がありますのでご注意ください。
  • Power Automateクラウドフローの入出力変数については触れていません。
  • 2021年2月の記事です。
  • あくまでも個人のまとめです。
  • 誤りがありましたらコメントでご指摘いただけると幸いです。
  • Robinの公式サイトは2021年4月30日に終了しました。

datetime型を扱うアクションと変数について

datetime型変数はdatetime(日時データ)値を格納している変数です。
yyyy/MM/dd等に表記を変えたいときは「datetimeをテキストに変換」アクションを使います。
ただしテキスト値型になるため日時計算はできなくなります。

現在の時刻を取得します」アクション

変数名%CurrentDateTime%が作成され、システムの現在日時が格納されます。
2021-02-13-22-05-13.png

2021-02-13-22-17-16.png

%CurrentDateTime%は以下のプロパティ値を持ちます。
2021-02-13-22-16-07.png

「変数を設定する」アクションで%CurrentDateTime%がもつ各プロパティ値を出力

曜日はテキスト値

2021-02-13-22-21-46.png

2021-02-13-22-22-59.png

Year,Month,day,Hour,Minute,Secondは数値

2021-02-14-00-44-18.png

2021-02-14-00-44-43.png

「変数を設定する」アクションから任意の日時を設定

2021-02-13-22-55-52.png

時間は省略して記入できますが、一度保存すると自動的に00:00:00が付与されます

2021-02-13-22-56-20.png

2021-02-13-22-56-56.png

「日付の減算」アクション

2つの日時の差を求めることができます

2021-02-13-22-57-23.png

2021-02-13-22-57-51.png

「加算する日時」アクション

各時間の単位でかdatetime値の加算ができます。
2021-02-14-00-33-34.png

2021-02-14-00-35-08.png

「datetimeをテキストに変更」アクション

datetime値の書式を変更します。
生成された変数の値はテキスト値です。
2021-02-14-00-48-59.png

2021-02-14-00-49-56.png

Datetime型の応用編

当月月初を求める1

時刻まで考慮しない場合2アクションで可能です。
2021-02-14-01-13-38.png

現在日時からCurrentDateTime.dayを引くと0日になり先月末になります。
あとは+1日すれば月初になります。
2021-02-14-01-14-10.png

2021-02-14-01-14-49.png

DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
DateTime.Add DateTime: CurrentDateTime TimeToAdd: -CurrentDateTime.Day + 1 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ResultedDate

当月月末を求める1

時刻まで考慮しないパターンです。
2021-02-14-01-53-42.png

月初を求めたところからひと月進めて1日引く処理です。
前月末から+1月で良さそうなのですが、単純にMonthに+1されるだけなので例えば3月の場合、3月28日となってしまうためです。

DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
DateTime.Add DateTime: CurrentDateTime TimeToAdd: -CurrentDateTime.Day + 1 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ResultedDate
DateTime.Add DateTime: ResultedDate TimeToAdd: 1 TimeUnit: DateTime.TimeUnit.Months ResultedDate=> ResultedDate2
DateTime.Add DateTime: ResultedDate2 TimeToAdd: -1 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ResultedDate3

当月月初を求める2

現在日時のプロパティ値からYearとMonthを使い01日を結合したテキスト値を作成。
それをdatetime値にもどします。
2021-02-14-18-33-48.png

2021-02-14-18-34-35.png

月初1日0時00分00秒を得ることができます。
2021-02-14-18-37-45.png

DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
SET date TO $'''%CurrentDateTime.Year%/%CurrentDateTime.Month%/01'''
Text.ConvertTextToDateTime.ToDateTime Text: date DateTime=> TextAsDateTime

当月月末を求める2

当月月初を求めてから一か月進めて1秒引きます。
image.png

実行結果
月末23時59分59秒を求めることができます。
image.png

DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
SET date TO $'''%CurrentDateTime.Year%/%CurrentDateTime.Month%/01'''
Text.ConvertTextToDateTime.ToDateTime Text: date DateTime=> TextAsDateTime
DateTime.Add DateTime: TextAsDateTime TimeToAdd: 1 TimeUnit: DateTime.TimeUnit.Months ResultedDate=> ResultedDate
DateTime.Add DateTime: ResultedDate TimeToAdd: -1 TimeUnit: DateTime.TimeUnit.Seconds ResultedDate=> ResultedDate2

どちらのパターンも「datetimeをテキストに変更」アクションを適用して、日付だけの形式にするなら結果は同じですが、時刻も含めて考慮するケースでは1つめのパターンは注意が必要です。

数値型の日付をdaitetime値に変更する

「20210101」 のような数値型の日付をDatetime型の日時に変換します。
テキストのスライスを使った方法です。
2021-02-14-18-09-42.png

2021-02-14-18-11-39.png

実行結果
2021-02-14-18-10-08.png

SET NumDate TO 20210214
Text.FromNumber Number: NumDate DecimalPlaces: 0 UseThousandsSeparator: False FormattedNumber=> NumDateText
Text.ConvertTextToDateTime.ToDateTime Text: $'''%NumDateText[:4]%/%NumDateText[4:6]%/%NumDateText[6:]%''' DateTime=> TextAsDateTime

週末を考慮した月末稼働日

image.png

実行結果
2021-02-16-18-43-40.png
今月は26日が月末稼働日!厳しい(;'∀')

DateTime.GetCurrentDateTime.Local DateTimeFormat: DateTime.DateTimeFormat.DateAndTime CurrentDateTime=> CurrentDateTime
SET date TO $'''%CurrentDateTime.Year%/%CurrentDateTime.Month%/01'''
Text.ConvertTextToDateTime.ToDateTime Text: date DateTime=> TextAsDateTime
DateTime.Add DateTime: TextAsDateTime TimeToAdd: 1 TimeUnit: DateTime.TimeUnit.Months ResultedDate=> ResultedDate
DateTime.Add DateTime: ResultedDate TimeToAdd: -1 TimeUnit: DateTime.TimeUnit.Seconds ResultedDate=> ResultedDate2
SET WeekofDay TO ResultedDate2.DayOfWeek
SWITCH WeekofDay
    CASE = $'''Sunday'''
        DateTime.Add DateTime: ResultedDate2 TimeToAdd: -2 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ResultedDate3
    CASE = $'''Saturday'''
        DateTime.Add DateTime: ResultedDate2 TimeToAdd: -1 TimeUnit: DateTime.TimeUnit.Days ResultedDate=> ResultedDate3
    DEFAULT
        SET ResultedDate3 TO ResultedDate2
END

今回のまとめ

型を意識しないとエラーがでやすいです。

地味ですがまだまだ続きます。(;'∀')

参考

Robin - RPA language
Power Automate Desktop の変数の処理 - Learn - Microsoft Docs

17
14
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?