ボーカルリムーバーオンライン無料
Power Automate Desktopを体系的に学ぶならUdemy【初回ユーザ限定・最大96%割引】

Power Automateについて詳しく解説します

  • Power Automate Desktopでファイルの更新日時を取得したい
  • 取得した更新日時を使った業務効率化を知りたい

当記事では、上記の疑問にお答えします。

 

Power Automate Desktopでフォルダー内のファイルを取得すると様々な要素が取得できます。

ファイル名はもちろん、ファイルパスや作成日時、更新日時などが取得できます。

 

しかし「そんな要素を取得して一体何に使うの?」と思う方もいるのではないでしょうか。

 

当記事では、ファイルの更新日時を取得する方法を解説し、応用として更新日時を利用した資料の作成方法を解説いたします。

ぜひ一度読んでみてください。

 当記事に記載した手順は、すべてPower Automate Desktopの無料版で作成した手順です。

 
Power Automate Desktopで作業自動化の電子書籍を出版しました!
📘ヘルプデスクが面倒な作業を超自動化する全方法 メール自動化編
著:やまもとてつや

Tipstour初の電子書籍化!

37歳で初の正社員となりITヘルプデスクとして勤務中の著者が、Power Automate Desktopを使った8つのメール作業・自動化事例とその方法を本書でご紹介しています。

これを読めば、ヘルプデスクの担当者はもちろん、WindowsPCで作業するすべてのワーカーの面倒なメール作業を自動化可能です。

Kindle Unlimitedで読み放題対象!
(30日間無料体験アリ)

【前提】ファイルの更新日時はフォルダーアクションから取得できる

ファイルの更新日時はフォルダーアクションにあるフォルダー内のファイルを取得から取得可能です。

 

取得後は変数Filesが生成され、FilesにあるLastModifiedプロパティを使えば更新日時を取得できます。

一度For Eachで変数をCurrentItemに変えないと、Excel等に転記はできないので注意してください。

 

実際に更新日時を取得して、Excelに転記してみましょう。

下記画像のように、フォルダー内にファイルがあったとします。

how_to_get_the_modification_time_of_a_file46

新しいフローを作成したら、フォルダーアクションにあるフォルダー内のファイルを取得をドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file47

画面が変わったら、フォルダー欄に該当のフォルダーを選択して保存します。

how_to_get_the_modification_time_of_a_file48

生成された変数としてFilesが生成されたのを確認しましょう。

 

次にExcelアクションにあるExcelの起動をドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file49

画面が変わったら、そのまま保存します。

 

更新日時を転記するため、ループアクションのFor Eachをドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file50

画面が変わったら、反復処理を行う値欄に%Files%と入力します。

how_to_get_the_modification_time_of_a_file51

保存先欄にCurrentItemという変数が生成されました。

 

For EachとEndの間にExcelアクションのExcelワークシートから最初の空の列や行を取得をドラッグ&ドロップします。

how_to_get_the_modification_time_of_a_file52

画面が変わったら、そのまま保存してください。

how_to_get_the_modification_time_of_a_file53

変数が2つ生成されますが、今回はFirstFreeRowのみ使います。

 

最後に、ExcelアクションのExcelワークシートに書き込むをドラッグ&ドロップします。

how_to_get_the_modification_time_of_a_file54

画面が変わったら、以下のように入力して保存してください。

how_to_get_the_modification_time_of_a_file55

  • 書き込む値:%CurrentItem.LastModified%
  • :2
  • :%FirstFreeRow%

 

できたら、フローを実行します。

how_to_get_the_modification_time_of_a_file56

更新日時が取得できました!

 

他のアクションについては下記の記事でも詳しく解説しています。

フォルダー操作に関するアクションもすべてまとめています。

【応用①】ドキュメント管理表に更新日時を加える

前回の記事の応用操作で作ったドキュメント管理表の5列目に、更新日時を加えてみましょう。

how_to_get_the_modification_time_of_a_file1

前回の記事を読んでいない方は、下記の記事をお読みください。

前回のフローに更新日時を転記するフローを追加してみます。

ExcelアクションにあるExcelワークシートに書き込むをEndの前にドラッグ&ドロップしましょう。

how_to_get_the_modification_time_of_a_file2

画面が変わったら、以下のように入力して保存してください。

how_to_get_the_modification_time_of_a_file3

  • 書き込む値:%CurrentItem.LastModified%
  • :5
  • :%FirstFreeRow%

しかし、これでは転記した更新日時に時刻も入ってしまうので、月日のみを入力させるようにします。

8と9の間にテキストアクションのdatetimeをテキストに変換をドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file4

画面が変わったら、以下のように入力してください。

how_to_get_the_modification_time_of_a_file5

  • 変換するdatetime:%CurrentItem.LastModified%
  • 使用する形式:標準
  • 標準形式:短い日付形式

生成された変数としてFormattedDateTimeが生成されますが、何を表しているのかがわかりにくいので、LastModifiedに変更しました。

how_to_get_the_modification_time_of_a_file6

保存後は、先程作ったExcelワークシートに書き込むの書き込む値を今作成した変数に変更するのを忘れないでください。

how_to_get_the_modification_time_of_a_file7ここまでできたら、フローを実行してみます。

how_to_get_the_modification_time_of_a_file8

更新日時が入力されました!

作成したフローの前半部分です。

how_to_get_the_modification_time_of_a_file57

後半は下記になります。

how_to_get_the_modification_time_of_a_file58

少し長いので、For Each内の処理をサブフローとして管理するのもアリです。

【応用②】更新日時が変わったらバージョンを増やし、ファイル名を変更する

今度はドキュメント管理表にある作成日時と更新日時が違う場合に、管理表にあるバージョン数を変更しながらバージョン数を加えたファイル名として保存してみましょう。

上記作業により管理表とファイル名とで、常にバージョンが一致します。

以下が具体的なプロセスです。

  1. ドキュメント管理表にあるファイル名や作成日時、更新日時を読み取る。
  2. 読み取った管理表の更新日時とファイルの更新日時が違う場合に管理表のバージョン数を更新する。
  3. 更新したバージョン数をファイル名に加えて保存する。

フォルダー内には下記のようなファイルが入っています。

how_to_get_the_modification_time_of_a_file10

管理表は応用①で作成したものにバージョン数を加えたものを使います。

how_to_get_the_modification_time_of_a_file11

手順は6ステップと少し長めですが、ぜひ挑戦してみましょう。

【ステップ①】ファイル取得やExcel起動などの下準備をする

下準備としてフォルダー内のファイルの取得やExcelの起動、変数の設定を行います。

フォルダーアクションにあるフォルダー内のファイルを取得をドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file12

画面が変わったら、フォルダー欄に該当のフォルダーを入力して保存しましょう。

how_to_get_the_modification_time_of_a_file13

生成された変数としてFilesが設定されたのを確認します。

 

次にドキュメント管理表を開くため、ExcelアクションにあるExcelの起動をドラッグ&ドロップしましょう。

how_to_get_the_modification_time_of_a_file14

画面が変わったら、Excelの起動欄を次のドキュメントを開くに変更し該当のExcelファイルを選択して保存します。

how_to_get_the_modification_time_of_a_file15

最後に変数アクションから変数の設定をドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file16

画面が変わったら、値欄に4と設定します。

how_to_get_the_modification_time_of_a_file17

4はドキュメント管理表に最初にファイル名が記載されている行数です。

後に設定するFor Each内で変数を増やせば、常に同じ行で転記するのを防げます。

生成された変数として、NewVarが生成されたのを確認しておきましょう。

【ステップ②】For Eachアクションを設定する

下準備が終わったら、ループアクションにあるFor Eachをドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file18

画面が変わったら、反復処理を行う値欄に%Files%を入力して保存します。

how_to_get_the_modification_time_of_a_file19

生成された変数としてCurrentItemが生成されました。

CurrentItemにプロパティを設定すれば、更新日時を転記できます。

【ステップ③】ドキュメント管理表から各種データを読み込む

ドキュメント管理表から各種データを読み込みます。

読み込むデータは以下の3つです。

  • 拡張子のないファイル名
  • 更新日時
  • バージョン数

1つ目と3つ目はファイル名を作成するために作成し、2つ目の更新日時はファイルの更新日時と異なった際にバージョン数を増やすための条件として使います。

全てExcelアクションのExcelワークシートから読み取るで取得可能です。

今回のフローは少し長いので、サブフローに分けてみます。

 

左上のサブフローをクリックし新しいサブフローをクリックしてください。

how_to_get_the_modification_time_of_a_file20

画面が変わったら好きなサブフロー名を入力します。

how_to_get_the_modification_time_of_a_file21

今回はExcelから各種データを読み取るに変えました。

保存すると、自動でサブフローの作成画面に移るので中身を作ってみましょう。

 

ファイル名を取得するため、ExcelアクションのExcelワークシートから読み取るをドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file22

画面が変わったら、以下のように入力します。

how_to_get_the_modification_time_of_a_file23

  • 取得:単一セルの値
  • 先頭列:2
  • 先頭行:%NewVar%

生成された変数をFileNameに変更しておきましょう。

残りの更新日時とバージョン数も同様に取得するには、それぞれ先頭列を5と6に変えればOKです。

変数名も更新日時はLastModifiedDate、バージョン数はVersionNumberに変更しました。

 

ここまで入力するとサブフローの中身は、以下のようになります。

how_to_get_the_modification_time_of_a_file24

作成後、Mainに戻りフローコントロールアクションからサブフローの実行をFor Eachの下にドラッグ&ドロップします。

how_to_get_the_modification_time_of_a_file25

画面が変わったら、設定したサブフロー名を選んで保存しましょう。

how_to_get_the_modification_time_of_a_file26

【ステップ④】ifを使って更新日時で処理を行うか否かを分ける

今回のフローの目的は、該当のファイルと管理表とで更新日時が異なる場合にファイル名を変更することです。

異なる場合は処理をして、そうでない場合に処理をしないようにするにはifを使います。

 

条件アクションにあるifを、サブフローの実行の下にドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file27

画面が変わったら、以下のように入力します。

how_to_get_the_modification_time_of_a_file28

  • 最初のオペランド:%LastModifiedDate%
  • 演算子:と等しくない(<>)
  • 2番目のオペランド:%CurrentItem.LastModified%

最初のオペランドが管理表の更新日時、2番目のオペランドがファイルの更新日時です。

この2つが異なっている場合にif内の処理が行われるようにします。

【ステップ⑤】if内の処理を加える

if内で作成する処理は以下の3つです。

  • バージョン数を大きくして、管理表に書き込む
  • ドキュメント管理表の更新日時をファイル名の更新日時に書き換える
  • ファイル名と更新したバージョン数とを加えたファイル名に変更する

if内の処理も少し多いため、サブフローを作成します。

今回はExcelに更新日時とバージョンを書き込み、ファイルを保存するにしました。

 ちなみに、僕はよくサブフロー内で行われる処理のサマリーをサブフロー名にしています。
バージョン数を増やして転記する

まずはバージョン数を増やして転記しましょう。

変数アクションにある変数を大きくするを作成したサブフロー内にドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file29

画面が変わったら、以下のように入力して保存します。

how_to_get_the_modification_time_of_a_file30

  • 変数名:%VersionNumber%
  • 大きくする数値:0.1

次にExcelアクションのExcelワークシートに書き込むをドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file31

画面が変わったら、以下のように入力して保存します。

how_to_get_the_modification_time_of_a_file32

  • 書き込む値:%VersionNumber%
  • :6
  • :%Newvar%
更新日時をドキュメント管理表に転記する

次にファイルの更新日時をドキュメント管理表に転記します。

更新日時はそのまま転記すると時刻も入ってしまうため、先にテキストアクションにあるdatetimeをテキストに変換をドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file33

画面が変わったら、以下のように入力します。

how_to_get_the_modification_time_of_a_file34

  • 変換するdatetime:%CurrentItem.LastModified%
  • 使用する形式:標準
  • 標準形式:短い日付形式

生成された変数としてFormattedDateTimeが生成されたのを確認します。

転記にはExcelワークシートに書き込むを使い、以下の項目を入力して保存します。

  • 書き込む値:FormattedDateTime
  • :5
  • :%NewVar%
ファイル名を更新する

最後にファイル名を更新しましょう。

ファイルアクションにあるファイルの名前を変更するをドラッグ&ドロップします。

how_to_get_the_modification_time_of_a_file35

画面が変わったら、以下のように入力してください。

  • 名前を変更するファイル:%CurrentItem%
  • 新しいファイル名:%FileName%_%VersionNumber%
  • ファイルが存在する場合:何もしない

まず対象のファイルはCurrentItemで指定できます。

新しいファイル名を上記のように入力すると、以下のようにファイル名を更新できます。

システムAのファイル_1.1

入力が終わったら保存します。

 

これでサブフロー内の処理は全て入力しました。

メインのifアクションの間にフローコントロールアクションにあるサブフローの実行をドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file36

画面が変わったら、サブフローの実行欄に作成したサブフロー名を入力して保存します。

【ステップ⑥】後処理をする

最後にifアクションのEndの後に変数アクションにある変数を大きくするをドラッグ&ドロップします。

how_to_get_the_modification_time_of_a_file37

画面が変わったら、下記のように入力して保存してください。

how_to_get_the_modification_time_of_a_file30

  • 変数名:%NewVar%
  • 大きくする数値:1

これで管理表の行数が増えるので、常に同じ行に処理するのを防げます。

最後にFor EachのEndの下にExcelアクションのExcelを閉じるをドラッグ&ドロップしてください。

how_to_get_the_modification_time_of_a_file38

画面が変わったら、Excelを閉じる前欄をドキュメントを保存に切り替えて保存します。

how_to_get_the_modification_time_of_a_file39

ここまで作成するとMainフローは以下のようになります。

how_to_get_the_modification_time_of_a_file43

Excelからデータを読み込む際のサブフローの中身です。

how_to_get_the_modification_time_of_a_file41

ifアクション内のサブフローは下記のとおりです。

how_to_get_the_modification_time_of_a_file42

実行すると、ドキュメント管理表が更新されました。

how_to_get_the_modification_time_of_a_file44

ファイル名は下記のようになります。

how_to_get_the_modification_time_of_a_file45

ファイル名が変更され、ドキュメント管理表も更新できました。

まとめ

以上、ファイル名の更新日時を取得する方法を解説しました。

 

更新日時を取得する方法自体はとてもカンタンですが、実際どんな処理に応用すればいいかわからないものです。

今回はドキュメント管理表のバージョン管理を応用として紹介しましたが、アイディア次第でもっとスゴい処理もできるようになります。

 

今回の応用を起点として、ぜひいろんな処理に挑戦してみてください。

 
より詳しくPower Automate Desktopを学びたいと思ったら

Power Automate Desktopでの作業自動化について、より体系的に詳しく学んでいきたいと感じたら、Udemy(ユーデミー)が最適です。

Udemyはアメリカ発のWebラーニングサイトで、日本語のコースを含め、世界各国の言語でそれぞれの専門家のコースを動画形式で学ぶことが出来ます。

もちろんPower Automate Desktopの日本語コースも公開されており、すでに約300のコースがUdemyで公開・閲覧されています。

Udemyの豊富なPower Automate Desktop学習コース

Udemyは個人ユーザだけでなく、企業のeラーニングでも広く利用されています。

企業レベルのコースを受講することで、Power Automate Desktopの自動化テクニックを体系的に習得することが可能です。

 

Power Automate Desktopのコースは、業務に関連するジャンルのため1〜2万円台が一般的ですが、初回に限り、好きなコースを2000円で受講可能です。

無料で各コースの冒頭を視聴できるので、まずはUdemyにどのようなコースがあるのか、ぜひチェックしてみてください。

 

  UdemyのPower Automate Desktopコースを見てみる