社内のDX化進んでる?
AIにできることはAIにやらせちゃお?
今はとても便利で無料のRPAソフトがあります。
↑「Power Automate Desktop」(以下、PAD)というソフトがそれ。マイクロソフトが親切にも一部無料で使えるRPAソフトを公開してくれています。
一部無料とありますが、RPAの醍醐味である自動実行機能は無料では使えません。有料アカウントが必要です。
結局有料かーい!!と思われて、どうにか無料で自動実行できないかと、webをさまよったそこのあなた。
私もです。
そして、親切な方がブログで書かれていた自動実行の方法にたどり着きました。
その方法が、タスクスケジューラを組み合わせるもの。
「タスクスケジューラを使って、毎日定時にvbsファイル実行させて、txtファイルを作成して」、「そのテキストファイルがあるかないかで実行するループ処理をしたPADを実行させておく」というもの。
そのブログでは待機を60秒いれて、60秒ごとにtxtファイルがあるかないかを確認してあれば実行する、というものでした。
「あれ?これって待機時間をいじればタスクスケジューラいらなくね?」
って思った。
なので、そのループ処理を紹介します。
とりあえず作った処理↓※毎時00分00秒に実行させる。「実行させた時間からちょうど60分後」ではなく。毎時00分00秒です。
細かい処理は下記に記載しますが、やってることを文字で書くと
1.まずはループ処理を入れます。
2.現在の日時を取得します。
3.2で取得した日時に1時間足します。
4.3で作った日時を変形して00分00秒にします。
5.4で作った日時と1で作った今の時間の差を秒で取得します。
6.5で作った秒数だけ待機するようにWaitを入れる
これの繰り返しです。
ちょっと見にくいけど、画像の右側の「フロー変数」の時間を見てイメージしてみてください。
実行したい処理はこの塊の前か後ろに書けばいいです。
※前に書くと、実行したときに一回処理されて、その次の○○時00分00秒に実行され、以下ループとなる。
例)実行したとき「2021/08/02 13:08:52」に一回処理。次回は「2021/08/02 14:00:00」。その次は「2021/08/02 15:00:00」。以下1時間毎に処理される。
※後ろに書くと、実行したときにはまだなにも処理されず、実行した時間の次の〇〇時に初めて実行される。
例)実行したとき「2021/08/02 13:08:52」では処理されず、「2021/08/05 14:00:00」に初めて処理され、次回は 「2021/08/02 15:00:00」 。以下1時間毎に処理される。
1.まずはループ処理をいれます。
アクションの「ループ」→「ループ条件」を選択
設定内容は下記です
2.現在の日時を取得します。
アクションの「日時」→「現在の日時を取得します」を挿入
設定内容は下記です。初期値でそのままいじる必要なし。
3.2で取得した日時に1時間足します。
アクションの「日時」→「加算する日付」を挿入します。
設定は下記のように、日時「2で作成された変数CurrentDateTime」加算「1」、時間単位「時間」を指定します。
4.3で作った日時を変形して00分00秒にします。
アクションの「テキスト」→「テキストをdatetimeに変換」を挿入します
3で一時間足された時間が格納されている変数が ResultedDate
その変数で使いたいのが、00分00秒以外の〇〇時までなので、使いたいものだけ使って、00分00秒は文字で打ちます。
%ResultedDate.Year%/%ResultedDate.Month%/%ResultedDate.Day% %ResultedDate.Hour%:00:00
5.4で作った日時と1で作った今の時間の差を秒で取得します。
アクションの「日時」→「日付の減算」を挿入します。
4で作った日付を格納している変数が TextAsDateTime
この変数から今の時間を引くと、次に実行する〇〇時00分00秒までの時間がわかる。
元となる日付:%TextAsDateTime%
日付の減算:%CurrentDateTime%
差異を次の単位で取得:秒
6.5で作った秒数だけ待機するようにWaitを入れる
アクションの「遅延」→「Wait」を挿入
5で求めた秒数を指定する
期間:%TimeDifference%
以上です。
ね?簡単でしょ?
ちなみに、「毎日定時に実行する」場合は下記のように「加算する日時」と「テキストをdatetimeに変換」するところを一部変えます。
ここでは毎日朝7時に実行するようにしています。
フロー変数を見てもらうとイメージつくかな?
「加算する日時の指定」で「1日」になるようにする。
「テキストをdatetimeに変換する」で「%ResultedDate.Year%/%ResultedDate.Month%/%ResultedDate.Day% 07:00:00」を指定します。
7時じゃなくて、6時が良い場合は、06:00:00にしてください。
この方法でもタスクスケジューラ使う方法でも、どっちともループで実行させっぱなっしという状況からは逃れらないようです。
もっとスマートに実行されるようにするには有料アカウントを使うしかないか~。
残念!!
まぁ、無料でこんだけできたら良いか!笑
コメント