LoginSignup
0
1

More than 1 year has passed since last update.

PowerAutomate で OneDrive フォルダ上の最新ファイルを取得する

Posted at

やりたいこと

OneDriveのファイルの中から最新のファイルを見つける。

・・・他に方法ありそうな気はするのですがこれくらい力技でやっておけば他にも応用がききそう。
OneDriveをSharePointにしたり、最新ファイルじゃなくて特定条件にしたり。

さっそく手順

OneDriveからファイルを取得「フォルダー内のファイルのリスト」

image.png

トリガーは何でもよいです。
もし該当フォルダのファイル数がそこそこ多いのであれば…「・・・」の「設定」の「改ページ」の設定を「オン」にして「しきい値」を多めにしておきましょう。デフォルトだとファイル取得の上限がけっこう少なめに設定されているようです。

image.png

Apply to eachで全ファイルを調べて一番新しいものをとってくる

全体ではこんな感じです。
やっていることはファイル一覧の中から最大値をみつけるだけなのですが、詳しく説明していきます。

image.png

1つ1つの処理を見ていきます。

まず「変数」を初期化して用意します。
初期値は「ticks('1970-01-01')」です。適当にありえないくらい古い日付をいれておきます。
ticks() という関数で日付を整数値にしているのがポイントです。

image.png

Apply to each で全ファイルを1つ1つ見ながら次の条件で見ていきます。

image.png

左辺は「ticks(item()['LastModified'])」です。つまりファイルの最終更新日をticks()で数値にしたもの。
右辺は「最新日付」変数です。初期値だと 1970-01-01 という日付の ticks() の数値がはいっています。

数値同士なので大小で比較可能なので、「ファイルの最終更新日」が「最新日付(1970-01-01)」より大きい=新しい日付かどうかをチェックします。

image.png

はい」の場合には、変数「最新日付」に「ticks(item()['LastModified'])」つまり今チェックしている「ファイルの更新日」をいれます。

いいえ」の場合にはなにもしません。

これを全ファイルにを繰り返すことで、新しいファイルを見つけ次第「最新日付」の更新をしていくことで、もっとも新しいファイルを見つけることができます。

最新のファイルを見つけてどうする?

後はお好きにお使いください!
例えば「ファイル名が知りたい」だったら上の処理の「はい」の中でファイル名を変数にいれておけばよいです。

もともとやりたかったことは、、、、
ログを格納しているフォルダのファイル一覧の最終更新日がXX時間以上古い=ログが更新されていない場合にバッチが止まっている!?
みたいなチェックをするために作った処理です。
なので「最新日付」が「ticks(addToTime(utcNow(), -10, 'Hour'))」≒現在時刻より10時間前と比べてどう?みたいな処理をいれることで監視処理に使いました。

0
1
0

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
0
1